gmtmath(1) GMT gmtmath(1)

## NAME

gmtmath - Reverse Polish Notation (RPN) calculator for data tables

## SYNOPSIS

gmtmath[-At_f(t).d[+e][+s|w] ] [-Ccols] [-Eeigen] [-I] [-Nn_col[/t_col] ] [-Q] [-S[f|l] ] [-Tt_min/t_max/t_inc[+n]|tfile] [-V[level] ] [-bbinary ] [-dnodata ] [-eregexp ] [-fflags ] [-ggaps ] [-hheaders ] [-iflags ] [-oflags ] [-sflags ]operand[operand]OPERATOR[operand]OPERATORa|=[outfile]Note:No space is allowed between the option flag and the associated arguments.

## DESCRIPTION

gmtmathwill perform operations like add, subtract, multiply, and divide on one or more table data files or constants using Reverse Pol- ish Notation (RPN) syntax (e.g., Hewlett-Packard calculator-style). Arbitrarily complicated expressions may therefore be evaluated; the final result is written to an output file [or standard output]. Data operations are element-by-element, not matrix manipulations (except where noted). Some operators only require one operand (see below). If no data tables are used in the expression then options-T,-Ncan be set (and optionally-boto indicate the data type for binary tables). If STDIN is given, the standard input will be read and placed on the stack as if a file with that content had been given on the command line. By default, all columns except theatimeacolumn are operated on, but this can be changed (see-C). Complicated or frequently occurring expressions may be coded as a macro for future use or stored and recalled via named memory locations.

## REQUIRED ARGUMENTS

operandIfoperandcan 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 thatstdinwill be read and placed on the stack; STDIN can appear more than once if nec- essary.outfileThe name of a table data file that will hold the final result. If not given then the output is sent to stdout.

## OPTIONAL ARGUMENTS

-At_f(t).d[+e][+r][+s|w] Requires-Nand will partially initialize a table with values from the given file containingtandf(t)only. Thetis placed in columnt_colwhilef(t)goes into columnn_col- 1 (see-N). Append+rto only placef(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+ewhich 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 coeffi- cients]. Append+wift_f(t).dhas a third column with weights, or append+sift_f(t).dhas 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+eis in effect.-CcolsSelect the columns that will be operated on until next occur- rence 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).-Caselects all columns, including time column, while-Crreverses (toggles) the current choices. When-Cis in effect it also controls which columns from a file will be placed on the stack.-EeigenSets 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.-IReverses the output row sequence from ascending time to descend- ing [ascending].-Nn_col[/t_col] Select the number of columns and optionally the column number that contains theatimeavariable [0]. Columns are numbered starting at 0 [2/0]. If input files are specified then-Nwill add any missing columns.-QQuick mode for scalar calculation. Shorthand for-Ca-N1/0-T0/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 theMODE) and only want to report a single number instead of numer- ous records with identical values. Appendlto get the last row andfto get the first row only [Default].-Tt_min/t_max/t_inc[+n]|tfileRequired when no input files are given. Sets the t-coordinates of the first and last point and the equidistant sampling inter- val for theatimeacolumn (see-N). Append+nif you are speci- fying the number of equidistant points instead. If there is no time column (only data columns), give-Twith 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] (morea|) Select verbosity level [c].-bi[ncols][t] (morea|) Select native binary input.-bo[ncols][type] (morea|) Select native binary output. [Default is same as input, but see-o]-d[i|o]nodata(morea|) Replace input columns that equalnodatawith NaN and do the reverse on output.-e[~]^<i>apattern^<i>a|-e[~]/regexp/[i] (morea|) Only accept data records that match the given pattern.-f[i|o]colinfo(morea|) Specify data types of input and/or output columns.-g[a]x|y|d|X|Y|D|[col]z[+|-]gap[u] (morea|) Determine data gaps and line breaks.-h[i|o][n][+c][+d][+rremark][+rtitle] (morea|) Skip or produce header record(s).-icols[+l][+sscale][+ooffset][,^<i>a|] (morea|) Select input columns and transformations (0 is first column).-ocols[,a|] (morea|) Select output columns (0 is first column).-s[cols][a|r] (morea|) 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 explana- tion 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.

## OPERATORS

Choose among the following 185 operators.aargsaare the number of input and output arguments. +----------+------+---------------------+ |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 func- | | | | tion for p = A, n = | | | | B, and x = C | +----------+------+---------------------+ |BPDF| 3 1 | Binomial probabil- | | | | ity density func- | | | | tion 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 opera- | | | | tor) | +----------+------+---------------------+ |BITNOT| 1 1 | ~A (bitwise NOT | | | | operator, i.e., | | | | return twoas com- | | | | plement) | +----------+------+---------------------+ |BITOR| 2 1 | A | B (bitwise OR | | | | operator) | +----------+------+---------------------+ |BITRIGHT| 2 1 | A >> B (bitwise | | | | right-shift opera- | | | | tor) | +----------+------+---------------------+ |BITTEST| 2 1 | 1 if bit B of A is | | | | set, else 0 (bit- | | | | wise TEST operator) | +----------+------+---------------------+ |BITXOR| 2 1 | A ^ B (bitwise XOR | | | | operator) | +----------+------+---------------------+ |CEIL| 1 1 | ceil (A) (smallest | | | | integer >= A) | +----------+------+---------------------+ |CHICRIT| 2 1 | Chi-squared distri- | | | | bution critical | | | | value for alpha = A | | | | and nu = B | +----------+------+---------------------+ |CHICDF| 2 1 | Chi-squared cumula- | | | | tive distribution | | | | function for chi2 = | | | | A and nu = B | +----------+------+---------------------+ |CHIPDF| 2 1 | Chi-squared proba- | | | | bility 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 coeffi- | | | | cient r(A, B) | +----------+------+---------------------+ |COS| 1 1 | cos (A) (A in radi- | | | | ans) | +----------+------+---------------------+ |COSD| 1 1 | cos (A) (A in | | | | degrees) | +----------+------+---------------------+ |COSH| 1 1 | cosh (A) | +----------+------+---------------------+ |COT| 1 1 | cot (A) (A in radi- | | | | ans) | +----------+------+---------------------+ |COTD| 1 1 | cot (A) (A in | | | | degrees) | +----------+------+---------------------+ |CSC| 1 1 | csc (A) (A in radi- | | | | ans) | +----------+------+---------------------+ |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 de- | | | | rivative | +----------+------+---------------------+ |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],a|, NaN) | +----------+------+---------------------+ |DIV| 2 1 | A / B | +----------+------+---------------------+ |DUP| 1 2 | Places duplicate of | | | | A on the stack | +----------+------+---------------------+ |ECDF| 2 1 | Exponential cumula- | | | | tive distribution | | | | function for x = A | | | | and lambda = B | +----------+------+---------------------+ |ECRIT| 2 1 | Exponential distri- | | | | bution critical | | | | value for alpha = A | | | | and lambda = B | +----------+------+---------------------+ |EPDF| 2 1 | Exponential proba- | | | | bility 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 func- | | | | tion 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 dis- | | | | tribution 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 den- | | | | sity 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 inte- | | | | grate 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 func- | | | | tion for z = A | +----------+------+---------------------+ |LCRIT| 1 1 | Laplace distribu- | | | | tion 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 (mini- | | | | mum) 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 solu- | | | | tion 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 divi- | | | | sion) | +----------+------+---------------------+ |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 val- | | | | ues with mean A and | | | | std. deviation B | +----------+------+---------------------+ |OR| 2 1 | NaN if B == NaN, | | | | else A | +----------+------+---------------------+ |PCDF| 2 1 | Poisson cumulative | | | | distribution func- | | | | tion for x = A and | | | | lambda = B | +----------+------+---------------------+ |PERM| 2 1 | Permutations n_P_r, | | | | with n = A and r = | | | | B | +----------+------+---------------------+ |PPDF| 2 1 | Poisson distribu- | | | | tion 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 associ- | | | | ated Legendre poly- | | | | nomial P(A) degree | | | | B order C (geophys- | | | | ical convention) | +----------+------+---------------------+ |POP| 1 0 | Delete top element | | | | from the stack | +----------+------+---------------------+ |POW| 2 1 | A ^ B | +----------+------+---------------------+ |PQUANT| 2 1 | The Bath quantile | | | | (0-100%) of A | +----------+------+---------------------+ |PQUANTW| 3 1 | The Cath 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 val- | | | | ues between A and B | +----------+------+---------------------+ |RCDF| 1 1 | Rayleigh cumulative | | | | distribution func- | | | | tion for z = A | +----------+------+---------------------+ |RCRIT| 1 1 | Rayleigh distribu- | | | | tion 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 probabil- | | | | ity density func- | | | | tion 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 radi- | | | | ans) | +----------+------+---------------------+ |SECD| 1 1 | sec (A) (A in | | | | degrees) | +----------+------+---------------------+ |SIGN| 1 1 | sign (+1 or -1) of | | | | A | +----------+------+---------------------+ |SIN| 1 1 | sin (A) (A in radi- | | | | ans) | +----------+------+---------------------+ |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 radi- | | | | ans) | +----------+------+---------------------+ |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 polyno- | | | | mial Tn(-1<A<+1) of | | | | degree B | +----------+------+---------------------+ |TCRIT| 2 1 | Studentas t distri- | | | | bution critical | | | | value for alpha = A | | | | and nu = B | +----------+------+---------------------+ |TPDF| 2 1 | Studentas t proba- | | | | bility density | | | | function for t = A, | | | | and nu = B | +----------+------+---------------------+ |TCDF| 2 1 | Studentas t cumula- | | | | tive distribution | | | | function for t = A, | | | | and nu = B | +----------+------+---------------------+ |UPPER| 1 1 | The highest (maxi- | | | | mum) 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 func- | | | | tion for x = A, | | | | scale = B, and | | | | shape = C | +----------+------+---------------------+ |WCRIT| 3 1 | Weibull distribu- | | | | tion 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 func- | | | | tion 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 | +----------+------+---------------------+

## SYMBOLS

The following symbols have special meaning: +-------+----------------------------+ |PI| 3.1415926a| | +-------+----------------------------+ |E| 2.7182818a| | +-------+----------------------------+ |EULER| 0.5772156a| | +-------+----------------------------+ |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,a|, N-1 | +-------+----------------------------+

## ASCII FORMAT PRECISION

The ASCII output formats of numerical data are controlled by parameters in your gmt.conf file. Longitude and latitude are formatted according to FORMAT_GEO_OUT, absolute time is under the control of FOR- MAT_DATE_OUT and FORMAT_CLOCK_OUT, whereas general floating point val- ues are formatted according to FORMAT_FLOAT_OUT. Be aware that the for- mat in effect can lead to loss of precision in ASCII output, which can lead to various problems downstream. If you find the output is not written with enough precision, consider switching to binary output (-boif available) or specify more decimals using the FORMAT_FLOAT_OUT set- ting.

## NOTES ON OPERATORS

1. The operatorsPLMandPLMgcalculate the associated Legendre polyno- mial of degree L and order M in x which must satisfy -1 <= x <= +1 and 0 <= M <= L. x, L, and M are the three arguments preceding the opera- tor.PLMis not normalized and includes the Condon-Shortley phase (-1)^M.PLMgis normalized in the way that is most commonly used in geophysics. The C-S phase can be added by using -M as argument.PLMwill overflow at higher degrees, whereasPLMgis stable until ultra high degrees (at least 3000). 2. Files that have the same names as some operators, e.g.,ADD,SIGN,=, etc. should be identified by prepending the current directory (i.e., ./). 3. The stack depth limit is hard-wired to 100. 4. All functions expecting a positive radius (e.g.,LOG,KEI, etc.) are passed the absolute value of their argument. 5. TheDDTandD2DT2functions only work on regularly spaced data. 6. All derivatives are based on central finite differences, with natu- ral boundary conditions. 7.ROOTSmust be the last operator on the stack, only followed by=.

## STORE, RECALL AND CLEAR

You may store intermediate calculations to a named variable that you may recall and place on the stack at a later time. This is useful if you need access to a computed quantity many times in your expression as it will shorten the overall expression and improve readability. To save a result you use the special operatorSTO@label, wherelabelis the name you choose to give the quantity. To recall the stored result to the stack at a later time, use [RCL]@label, i.e.,RCLis optional. To clear memory you may useCLR@label. Note thatSTOandCLRleave the stack unchanged. 8. The bitwise operators (BITAND,BITLEFT,BITNOT,BITOR,BITRIGHT,BITTEST, andBITXOR) convert a tablesas double precision values to unsigned 64-bit ints to perform the bitwise operations. Consequently, the largest whole integer value that can be stored in a double preci- sion value is 2^53 or 9,007,199,254,740,992. Any higher result will be masked to fit in the lower 54 bits. Thus, bit operations are effec- tively limited to 54 bits. All bitwise operators return NaN if given NaN arguments or bit-settings <= 0. 9. TAPER will interpret its argument to be a width in the same units as the time-axis, but if no time is provided (i.e., plain data tables) then the width is taken to be given in number of rows.

## MACROS

Users may save their favorite operator combinations as macros via the filegmtmath.macrosin their current or user directory. The file may contain any number of macros (one per record); comment lines starting with # are skipped. The format for the macros isname=arg1arg2a|arg2[ :comment] wherenameis how the macro will be used. When this operator appears on the command line we simply replace it with the listed argument list. No macro may call another macro. As an example, the following macro expects that the time-column contains seafloor ages in Myr and computes the predicted half-space bathymetry:DEPTH=SQRT350MUL2500ADDNEG:usage:DEPTHtoreturnhalf-spaceseafloordepthsNote: Because geographic or time constants may be present in a macro, it is required that the optional comment flag (:) must be followed by a space. As another example, we show a macroGPSWEEKwhich determines which GPS week a timestamp belongs to:GPSWEEK= 1980-01-06T00:00:00 SUB 86400 DIV 7 DIV FLOOR : GPS week without rollover

## ACTIVE COLUMN SELECTION

When-Ccolsis set then any operation, including loading of data from files, will restrict which columns are affected. To avoid unexpected results, note that if you issue a-Ccolsoption before you load in the data then only those columns will be updated, hence the unspecified columns will be zero. On the other hand, if you load the file first and then issue-Ccolsthen the unspecified columns will have been loaded but are then ignored until you undo the effect of-C.

## EXAMPLES

To add two plot dimensions of different units, we can run length=`gmt math -Q 15c 2i SUB =` To take the square root of the content of the second data column being piped throughgmtmathby process1 and pipe it through a 3rd process, use process1 | gmt math STDIN SQRT = | process3 To take log10 of the average of 2 data files, use gmt math file1.d file2.d ADD 0.5 MUL LOG10 = file3.d Given the file samples.d, which holds seafloor ages in m.y. and seafloor depth in m, use the relation depth(in m) = 2500 + 350 * sqrt (age) to print the depth anomalies: gmt math samples.d T SQRT 350 MUL 2500 ADD SUB = | lpr To take the average of columns 1 and 4-6 in the three data sets sizes.1, sizes.2, and sizes.3, use gmt math -C1,4-6 sizes.1 sizes.2 ADD sizes.3 ADD 3 DIV = ave.d To take the 1-column data set ages.d and calculate the modal value and assign it to a variable, try gmt set mode_age = `gmt math -S -T ages.d MODE =` To evaluate the dilog(x) function for coordinates given in the file t.d: gmt math -Tt.d T DILOG = dilog.d To demonstrate the use of stored variables, consider this sum of the first 3 cosine harmonics where we store and repeatedly recall the trigonometric argument (2*pi*T/360): gmt math -T0/360/1 2 PI MUL 360 DIV T MUL STO@kT COS @kT 2 MUL COS ADD \ @kT 3 MUL COS ADD = harmonics.d To usegmtmathas a RPN Hewlett-Packard calculator on scalars (i.e., no input files) and calculate arbitrary expressions, use the-Qoption. As an example, we will calculate the value of Kei (((1 + 1.75)/2.2) + cos (60)) and store the result in the shell variable z: set z = `gmt math -Q 1 1.75 ADD 2.2 DIV 60 COSD ADD KEI =` To usegmtmathas a general least squares equation solver, imagine that the current table is the augmented matrix [ A | b ] and you want the least squares solution x to the matrix equation A * x = b. The operatorLSQFITdoes this; it is your job to populate the matrix correctly first. The-Aoption will facilitate this. Suppose you have a 2-column file ty.d withtandb(t)and you would like to fit a the model y(t) = a + b*t + c*H(t-t0), where H is the Heaviside step function for a given t0 = 1.55. Then, you need a 4-column augmented table loaded with t in column 1 and your observed y(t) in column 3. The calculation becomes gmt math -N4/1 -Aty.d -C0 1 ADD -C2 1.55 STEPT ADD -Ca LSQFIT = solution.d Note we use the-Coption to select which columns we are working on, then make active all the columns we need (here all of them, with-Ca) before callingLSQFIT. The second and fourth columns (col numbers 1 and 3) are preloaded with t and y(t), respectively, the other columns are zero. If you already have a pre-calculated table with the augmented matrix [ A | b ] in a file (say lsqsys.d), the least squares solution is simply gmt math -T lsqsys.d LSQFIT = solution.d Users must be aware that when-Ccontrols which columns are to be active the control extends to placing columns from files as well. Con- trast the different result obtained by these very similar commands: echo 1 2 3 4 | gmt math STDIN -C3 1 ADD = 1 2 3 5 versus echo 1 2 3 4 | gmt math -C3 STDIN 1 ADD = 0 0 0 5

## REFERENCES

Abramowitz, M., and I. A. Stegun, 1964,HandbookofMathematicalFunc-tions, Applied Mathematics Series, vol. 55, Dover, New York. Holmes, S. A., and W. E. Featherstone, 2002, A unified approach to the Clenshaw summation and the recursive computation of very high degree and order normalized associated Legendre functions.JournalofGeodesy, 76, 279-299. Press, W. H., S. A. Teukolsky, W. T. Vetterling, and B. P. Flannery, 1992,NumericalRecipes, 2nd edition, Cambridge Univ., New York. Spanier, J., and K. B. Oldman, 1987,AnAtlasofFunctions, Hemisphere Publishing Corp.

## SEE ALSO

gmt(1),grdmath(1)

## COPYRIGHT

2017, P. Wessel, W. H. F. Smith, R. Scharroo, J. Luis, and F. Wobbe 5.4.2 Jun 24, 2017 gmtmath(1)

gmt5 5.4.2 - Generated Wed Jun 28 16:30:57 CDT 2017