GMTMATH(1gmt) | GMT | GMTMATH(1gmt) |

*operand*- If
*operand*can be opened as a file it will be read as an ASCII (or binary, see**-bi**) table data file. If not a file, it is interpreted as a numerical constant or a special symbol (see below). The special argument STDIN means that*stdin*will be read and placed on the stack; STDIN can appear more than once if necessary.

*outfile*- The name of a table data file that will hold the final result. If not given then the output is sent to stdout.

**-A***t_f(t).d*[**+e**][**+r**][**+s**|**w**]- Requires
**-N**and will partially initialize a table with values from the given file containing*t*and*f(t)*only. The*t*is placed in column*t_col*while*f(t)*goes into column*n_col*- 1 (see**-N**). Append**+r**to only place*f(t)*and leave the left hand side of the matrix equation alone. If used with operators LSQFIT and SVDFIT you can optionally append the modifier**+e**which will instead evaluate the solution and write a data set with four columns: t, f(t), the model solution at t, and the the residuals at t, respectively [Default writes one column with model coefficients]. Append**+w**if*t_f(t).d*has a third column with weights, or append**+s**if*t_f(t).d*has a third column with 1-sigma. In those two cases we find the weighted solution. The weights (or sigmas) will be output as the last column when**+e**is in effect.

**-C***cols*- Select the columns that will be operated on until next
occurrence of
**-C**. List columns separated by commas; ranges like 1,3-5,7 are allowed.**-C**(no arguments) resets the default action of using all columns except time column (see**-N**).**-Ca**selects all columns, including time column, while**-Cr**reverses (toggles) the current choices. When**-C**is in effect it also controls which columns from a file will be placed on the stack.

**-E***eigen*- Sets the minimum eigenvalue used by operators LSQFIT and SVDFIT [1e-7]. Smaller eigenvalues are set to zero and will not be considered in the solution.

**-I**- Reverses the output row sequence from ascending time to descending [ascending].

**-N***n_col*[/*t_col*]- Select the number of columns and optionally the column
number that contains the "time" variable [0]. Columns are
numbered starting at 0 [2/0]. If input files are specified then
**-N**will add any missing columns.

**-Q**- Quick mode for scalar calculation. Shorthand for
**-Ca****-N**1/0**-T**0/0/1. In this mode, constants may have plot units (i.e., c, i, p) and if so the final answer will be reported in the unit set by PROJ_LENGTH_UNIT.

**-S**[**f**|**l**]- Only report the first or last row of the results [Default
is all rows]. This is useful if you have computed a statistic (say the
**MODE**) and only want to report a single number instead of numerous records with identical values. Append**l**to get the last row and**f**to get the first row only [Default].

**-T***t_min*/*t_max*/*t_inc*[**+n**]|*tfile*- Required when no input files are given. Sets the
t-coordinates of the first and last point and the equidistant sampling
interval for the "time" column (see
**-N**). Append**+n**if you are specifying the number of equidistant points instead. If there is no time column (only data columns), give**-T**with no arguments; this also implies**-Ca**. Alternatively, give the name of a file whose first column contains the desired t-coordinates which may be irregular.

**-V**[*level*] (more ...)- Select verbosity level [c].

**-bi**[*ncols*][**t**] (more ...)- Select native binary input.

**-bo**[*ncols*][*type*] (more ...)- Select native binary output. [Default is same as input, but
see
**-o**]

**-d**[**i**|**o**]*nodata*(more ...)- Replace input columns that equal
*nodata*with NaN and do the reverse on output.

**-e**[**~**]*"pattern"***|****-e**[**~**]/*regexp*/[**i**] (more ...)- Only accept data records that match the given pattern.

**-f**[**i**|**o**]*colinfo*(more ...)- Specify data types of input and/or output columns.

**-g**[**a**]**x**|**y**|**d**|**X**|**Y**|**D**|[*col*]**z**[+|-]*gap*[**u**] (more ...)- Determine data gaps and line breaks.

**-h**[**i**|**o**][*n*][**+c**][**+d**][**+r***remark*][**+r***title*] (more ...)- Skip or produce header record(s).

**-i***cols*[**+l**][**+s***scale*][**+o***offset*][,*...*] (more ...)- Select input columns and transformations (0 is first column).

**-o***cols*[,...] (more ...)- Select output columns (0 is first column).

**-s**[*cols*][**a**|**r**] (more ...)- Set handling of NaN records.

**-^**or just**-**- Print a short message about the syntax of the command, then
exits (NOTE: on Windows just use
**-**).

**-+**or just**+**- Print an extensive usage (help) message, including the explanation of any module-specific option (but not the GMT common options), then exits.

**-?**or no arguments- Print a complete usage (help) message, including the explanation of all options, then exits.

Operator | args | Returns |

ABS |
1 1 | abs (A) |

ACOS |
1 1 | acos (A) |

ACOSH |
1 1 | acosh (A) |

ACSC |
1 1 | acsc (A) |

ACOT |
1 1 | acot (A) |

ADD |
2 1 | A + B |

AND |
2 1 | B if A == NaN, else A |

ASEC |
1 1 | asec (A) |

ASIN |
1 1 | asin (A) |

ASINH |
1 1 | asinh (A) |

ATAN |
1 1 | atan (A) |

ATAN2 |
2 1 | atan2 (A, B) |

ATANH |
1 1 | atanh (A) |

BCDF |
3 1 | Binomial cumulative distribution function for p = A, n = B, and x = C |

BPDF |
3 1 | Binomial probability density function for p = A, n = B, and x = C |

BEI |
1 1 | bei (A) |

BER |
1 1 | ber (A) |

BITAND |
2 1 | A & B (bitwise AND operator) |

BITLEFT |
2 1 | A << B (bitwise left-shift operator) |

BITNOT |
1 1 | ~A (bitwise NOT operator, i.e., return two's complement) |

BITOR |
2 1 | A | B (bitwise OR operator) |

BITRIGHT |
2 1 | A >> B (bitwise right-shift operator) |

BITTEST |
2 1 | 1 if bit B of A is set, else 0 (bitwise TEST operator) |

BITXOR |
2 1 | A ^ B (bitwise XOR operator) |

CEIL |
1 1 | ceil (A) (smallest integer >= A) |

CHICRIT |
2 1 | Chi-squared distribution critical value for alpha = A and nu = B |

CHICDF |
2 1 | Chi-squared cumulative distribution function for chi2 = A and nu = B |

CHIPDF |
2 1 | Chi-squared probability density function for chi2 = A and nu = B |

COL |
1 1 | Places column A on the stack |

COMB |
2 1 | Combinations n_C_r, with n = A and r = B |

CORRCOEFF |
2 1 | Correlation coefficient r(A, B) |

COS |
1 1 | cos (A) (A in radians) |

COSD |
1 1 | cos (A) (A in degrees) |

COSH |
1 1 | cosh (A) |

COT |
1 1 | cot (A) (A in radians) |

COTD |
1 1 | cot (A) (A in degrees) |

CSC |
1 1 | csc (A) (A in radians) |

CSCD |
1 1 | csc (A) (A in degrees) |

DDT |
1 1 | d(A)/dt Central 1st derivative |

D2DT2 |
1 1 | d^2(A)/dt^2 2nd derivative |

D2R |
1 1 | Converts Degrees to Radians |

DENAN |
2 1 | Replace NaNs in A with values from B |

DILOG |
1 1 | dilog (A) |

DIFF |
1 1 | Forward difference between adjacent elements of A (A[1]-A[0], A[2]-A[1], ..., NaN) |

DIV |
2 1 | A / B |

DUP |
1 2 | Places duplicate of A on the stack |

ECDF |
2 1 | Exponential cumulative distribution function for x = A and lambda = B |

ECRIT |
2 1 | Exponential distribution critical value for alpha = A and lambda = B |

EPDF |
2 1 | Exponential probability density function for x = A and lambda = B |

ERF |
1 1 | Error function erf (A) |

ERFC |
1 1 | Complementary Error function erfc (A) |

ERFINV |
1 1 | Inverse error function of A |

EQ |
2 1 | 1 if A == B, else 0 |

EXCH |
2 2 | Exchanges A and B on the stack |

EXP |
1 1 | exp (A) |

FACT |
1 1 | A! (A factorial) |

FCDF |
3 1 | F cumulative distribution function for F = A, nu1 = B, and nu2 = C |

FCRIT |
3 1 | F distribution critical value for alpha = A, nu1 = B, and nu2 = C |

FLIPUD |
1 1 | Reverse order of each column |

FLOOR |
1 1 | floor (A) (greatest integer <= A) |

FMOD |
2 1 | A % B (remainder after truncated division) |

FPDF |
3 1 | F probability density function for F = A, nu1 = B, and nu2 = C |

GE |
2 1 | 1 if A >= B, else 0 |

GT |
2 1 | 1 if A > B, else 0 |

HYPOT |
2 1 | hypot (A, B) = sqrt (A*A + B*B) |

I0 |
1 1 | Modified Bessel function of A (1st kind, order 0) |

I1 |
1 1 | Modified Bessel function of A (1st kind, order 1) |

IFELSE |
3 1 | B if A != 0, else C |

IN |
2 1 | Modified Bessel function of A (1st kind, order B) |

INRANGE |
3 1 | 1 if B <= A <= C, else 0 |

INT |
1 1 | Numerically integrate A |

INV |
1 1 | 1 / A |

ISFINITE |
1 1 | 1 if A is finite, else 0 |

ISNAN |
1 1 | 1 if A == NaN, else 0 |

J0 |
1 1 | Bessel function of A (1st kind, order 0) |

J1 |
1 1 | Bessel function of A (1st kind, order 1) |

JN |
2 1 | Bessel function of A (1st kind, order B) |

K0 |
1 1 | Modified Kelvin function of A (2nd kind, order 0) |

K1 |
1 1 | Modified Bessel function of A (2nd kind, order 1) |

KN |
2 1 | Modified Bessel function of A (2nd kind, order B) |

KEI |
1 1 | kei (A) |

KER |
1 1 | ker (A) |

KURT |
1 1 | Kurtosis of A |

LCDF |
1 1 | Laplace cumulative distribution function for z = A |

LCRIT |
1 1 | Laplace distribution critical value for alpha = A |

LE |
2 1 | 1 if A <= B, else 0 |

LMSSCL |
1 1 | LMS scale estimate (LMS STD) of A |

LMSSCLW |
2 1 | Weighted LMS scale estimate (LMS STD) of A for weights in B |

LOG |
1 1 | log (A) (natural log) |

LOG10 |
1 1 | log10 (A) (base 10) |

LOG1P |
1 1 | log (1+A) (accurate for small A) |

LOG2 |
1 1 | log2 (A) (base 2) |

LOWER |
1 1 | The lowest (minimum) value of A |

LPDF |
1 1 | Laplace probability density function for z = A |

LRAND |
2 1 | Laplace random noise with mean A and std. deviation B |

LSQFIT |
1 0 | Let current table be [A | b] return least squares solution x = A \ b |

LT |
2 1 | 1 if A < B, else 0 |

MAD |
1 1 | Median Absolute Deviation (L1 STD) of A |

MADW |
2 1 | Weighted Median Absolute Deviation (L1 STD) of A for weights in B |

MAX |
2 1 | Maximum of A and B |

MEAN |
1 1 | Mean value of A |

MEANW |
2 1 | Weighted mean value of A for weights in B |

MEDIAN |
1 1 | Median value of A |

MEDIANW |
2 1 | Weighted median value of A for weights in B |

MIN |
2 1 | Minimum of A and B |

MOD |
2 1 | A mod B (remainder after floored division) |

MODE |
1 1 | Mode value (Least Median of Squares) of A |

MODEW |
2 1 | Weighted mode value (Least Median of Squares) of A for weights in B |

MUL |
2 1 | A * B |

NAN |
2 1 | NaN if A == B, else A |

NEG |
1 1 | -A |

NEQ |
2 1 | 1 if A != B, else 0 |

NORM |
1 1 | Normalize (A) so max(A)-min(A) = 1 |

NOT |
1 1 | NaN if A == NaN, 1 if A == 0, else 0 |

NRAND |
2 1 | Normal, random values with mean A and std. deviation B |

OR |
2 1 | NaN if B == NaN, else A |

PCDF |
2 1 | Poisson cumulative distribution function for x = A and lambda = B |

PERM |
2 1 | Permutations n_P_r, with n = A and r = B |

PPDF |
2 1 | Poisson distribution P(x,lambda), with x = A and lambda = B |

PLM |
3 1 | Associated Legendre polynomial P(A) degree B order C |

PLMg |
3 1 | Normalized associated Legendre polynomial P(A) degree B order C (geophysical convention) |

POP |
1 0 | Delete top element from the stack |

POW |
2 1 | A ^ B |

PQUANT |
2 1 | The B'th quantile (0-100%) of A |

PQUANTW |
3 1 | The C'th weighted quantile (0-100%) of A for weights in B |

PSI |
1 1 | Psi (or Digamma) of A |

PV |
3 1 | Legendre function Pv(A) of degree v = real(B) + imag(C) |

QV |
3 1 | Legendre function Qv(A) of degree v = real(B) + imag(C) |

R2 |
2 1 | R2 = A^2 + B^2 |

R2D |
1 1 | Convert radians to degrees |

RAND |
2 1 | Uniform random values between A and B |

RCDF |
1 1 | Rayleigh cumulative distribution function for z = A |

RCRIT |
1 1 | Rayleigh distribution critical value for alpha = A |

RINT |
1 1 | rint (A) (round to integral value nearest to A) |

RMS |
1 1 | Root-mean-square of A |

RMSW |
1 1 | Weighted root-mean-square of A for weights in B |

RPDF |
1 1 | Rayleigh probability density function for z = A |

ROLL |
2 0 | Cyclicly shifts the top A stack items by an amount B |

ROTT |
2 1 | Rotate A by the (constant) shift B in the t-direction |

SEC |
1 1 | sec (A) (A in radians) |

SECD |
1 1 | sec (A) (A in degrees) |

SIGN |
1 1 | sign (+1 or -1) of A |

SIN |
1 1 | sin (A) (A in radians) |

SINC |
1 1 | sinc (A) (sin (pi*A)/(pi*A)) |

SIND |
1 1 | sin (A) (A in degrees) |

SINH |
1 1 | sinh (A) |

SKEW |
1 1 | Skewness of A |

SQR |
1 1 | A^2 |

SQRT |
1 1 | sqrt (A) |

STD |
1 1 | Standard deviation of A |

STDW |
2 1 | Weighted standard deviation of A for weights in B |

STEP |
1 1 | Heaviside step function H(A) |

STEPT |
1 1 | Heaviside step function H(t-A) |

SUB |
2 1 | A - B |

SUM |
1 1 | Cumulative sum of A |

TAN |
1 1 | tan (A) (A in radians) |

TAND |
1 1 | tan (A) (A in degrees) |

TANH |
1 1 | tanh (A) |

TAPER |
1 1 | Unit weights cosine-tapered to zero within A of end margins |

TN |
2 1 | Chebyshev polynomial Tn(-1<A<+1) of degree B |

TCRIT |
2 1 | Student's t distribution critical value for alpha = A and nu = B |

TPDF |
2 1 | Student's t probability density function for t = A, and nu = B |

TCDF |
2 1 | Student's t cumulative distribution function for t = A, and nu = B |

UPPER |
1 1 | The highest (maximum) value of A |

VAR |
1 1 | Variance of A |

VARW |
2 1 | Weighted variance of A for weights in B |

WCDF |
3 1 | Weibull cumulative distribution function for x = A, scale = B, and shape = C |

WCRIT |
3 1 | Weibull distribution critical value for alpha = A, scale = B, and shape = C |

WPDF |
3 1 | Weibull density distribution P(x,scale,shape), with x = A, scale = B, and shape = C |

XOR |
2 1 | B if A == NaN, else A |

Y0 |
1 1 | Bessel function of A (2nd kind, order 0) |

Y1 |
1 1 | Bessel function of A (2nd kind, order 1) |

YN |
2 1 | Bessel function of A (2nd kind, order B) |

ZCDF |
1 1 | Normal cumulative distribution function for z = A |

ZPDF |
1 1 | Normal probability density function for z = A |

ZCRIT |
1 1 | Normal distribution critical value for alpha = A |

ROOTS |
2 1 | Treats col A as f(t) = 0 and returns its roots |

PI |
3.1415926... |

E |
2.7182818... |

EULER |
0.5772156... |

EPS_F |
1.192092896e-07 (sgl. prec. eps) |

EPS_D |
2.2204460492503131e-16 (dbl. prec. eps) |

TMIN |
Minimum t value |

TMAX |
Maximum t value |

TRANGE |
Range of t values |

TINC |
t increment |

N |
The number of records |

T |
Table with t-coordinates |

TNORM |
Table with normalized t-coordinates |

TROW |
Table with row numbers 1, 2, ..., N-1 |

- 3.
- The stack depth limit is hard-wired to 100.

- 5.
- The
**DDT**and**D2DT2**functions only work on regularly spaced data.

- 7.
**ROOTS**must be the last operator on the stack, only followed by**=**.

length=`gmt math -Q 15c 2i SUB =`

process1 | gmt math STDIN SQRT = | process3

gmt math file1.d file2.d ADD 0.5 MUL LOG10 = file3.d

gmt math samples.d T SQRT 350 MUL 2500 ADD SUB = | lpr

gmt math -C1,4-6 sizes.1 sizes.2 ADD sizes.3 ADD 3 DIV = ave.d

gmt set mode_age = `gmt math -S -T ages.d MODE =`

gmt math -Tt.d T DILOG = dilog.d

set z = `gmt math -Q 1 1.75 ADD 2.2 DIV 60 COSD ADD KEI =`

gmt math -N4/1 -Aty.d -C0 1 ADD -C2 1.55 STEPT ADD -Ca LSQFIT = solution.d

gmt math -T lsqsys.d LSQFIT = solution.d

echo 1 2 3 4 | gmt math STDIN -C3 1 ADD = 1 2 3 5

echo 1 2 3 4 | gmt math -C3 STDIN 1 ADD = 0 0 0 5

June 26, 2017 | 5.4.2 |