Command-line calculator
Go to file
2023-06-13 20:18:08 +01:00
.github/workflows no CD/CI 2023-06-10 08:41:05 -04:00
app Remove some unused variables 2023-06-13 20:18:08 +01:00
docs/images prototype 2023-06-09 19:29:13 -04:00
src Remove some unused variables 2023-06-13 20:18:08 +01:00
test Improve tests for associative map 2023-06-10 11:48:50 +01:00
.gitignore ignore gh-page ford documents 2023-06-09 19:28:09 -04:00
ford.md no CD/CI 2023-06-10 08:41:05 -04:00
fpm.rsp Added @clean and @veryclean 2023-06-11 09:55:24 +01:00
fpm.toml reorg for fpm(1) 2023-06-09 19:14:39 -04:00
GNUmakefile Finally (I hope) managed to restore this file 2023-06-10 15:31:15 +01:00
README.md Update README.md 2023-06-11 10:10:06 +01:00

hp

Command-line calculator

This is an rpn calclulator with a maximum stack size of 5. It has full support for real and complex numbers and will calculate summary statistics for a set of reals of real pairs. Spaces are important since they are used to distinguish tokens.

Building

This code does not build with the default compiler on most systems and in fact is only known to build with ifort from Intel's OneAPI (you'll need both basic and hpc to get the Fortran compiler): https://www.intel.com/content/www/us/en/developer/tools/oneapi/overview.html

Makefiles are provided that will build this application on Windows or Linux using either nmake or make respectively.

Basic help

hp -h

Command Calculator
==================

Introduction
------------

This is a command-line calculator. It supports both real and complex modes, as well
as degrees/radians selection and precision control. It can be run interactively or as an
expression parser. This help is deliberately terse to encourage exploration.

-------------------------------------------------------------------------------
Operators: + - * / ^ ^/x ^x ^2 ^/2 ^3 ^/3 ^*2 ^*10 || ! %
Constants: pi e g G c two_pi pi_over_2
Functions: sin cos tan asin acos atan sinh cosh tanh log2 log lg len sq sqrt cb cbrt
           alog2 alog alog10 gamma ncr npr rem int nint
 Controls: fix[0-9] clx cl cla 
    Modes: real complex verbose terse degrees radians
 Memories: n=0...9  st<n> sw<n> rc<n> cl<n> m<n>+ m<n>- m<n>* m<n>/ msh
  Complex: ri _ || to_pol to_cart
  Actions: 1/ -- R r ? > < split drop
    Stats: { x1 x2 ... } { x1,y1 x2,y2 ... }
           n ux sx mx lqx uqx uy sy my lqy uqy a b cov corr
    Quits: q =

-------------------------------------------------------------------------------

Examples
--------
    hp "fix2 18 2 - 8 2 / * ="                    -> 64.00
    hp "2 -- complex sqrt ="                      -> (0.00000,-1.414214)
    hp -c "radians (1,pi_over_2)p ^ * degrees ="  -> (1.000000,180.000000) p

Build and Test with FPM

To build with fpm(1) ( as described at Fortran Package Manager ) enter:

     git clone https://github.com/sgeard/hp.git
     cd hp
     fpm test --compiler ifort
     fpm run --compiler ifort
     
     # or using the response file (saves writing --compiler ifort everywhere)
     fpm @build
     fpm @test
     fpm @run

or just list it as a dependency in your fpm.toml project file.

        [dependencies]
        hp        = { git = "https://github.com/sgeard/hp.git" }