summaryrefslogtreecommitdiff
path: root/tex/context/base/mkxl/mlib-mat.lmt
blob: 68e3c98d1d664ea8bd5bba10e2bc5871cce89fa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
if not modules then modules = { } end modules ['mlib-mat'] = {
    version   = 1.001,
    comment   = "companion to mlib-ctx.mkiv",
    author    = "Hans Hagen, PRAGMA-ADE, Hasselt NL",
    copyright = "PRAGMA ADE / ConTeXt Development Team",
    license   = "see context related readme files",
}

local scanners       = mp.scan
local injectors      = mp.inject

local scannumeric    = scanners.numeric
local scanpair       = scanners.pair
local scancolor      = scanners.color

local mppair         = injectors.pair or mp.pair

local registerscript = metapost.registerscript
local registerdirect = metapost.registerdirect

local m = xmath
local c = xcomplex

local m_acos      = m.acos      registerdirect("m_acos",      function() return m_acos     (scannumeric()) end)
local m_acosh     = m.acosh     registerdirect("m_acosh",     function() return m_acosh    (scannumeric()) end)
local m_asin      = m.asin      registerdirect("m_asin",      function() return m_asin     (scannumeric()) end)
local m_asinh     = m.asinh     registerdirect("m_asinh",     function() return m_asinh    (scannumeric()) end)
local m_atan      = m.atan      registerdirect("m_atan",      function() return m_atan     (scannumeric()) end)
local m_atan2     = m.atan2     registerdirect("m_atan2",     function() return m_atan2    (scanpair   ()) end)
local m_atanh     = m.atanh     registerdirect("m_atanh",     function() return m_atanh    (scannumeric()) end)
local m_cbrt      = m.cbrt      registerdirect("m_cbrt",      function() return m_cbrt     (scannumeric()) end)
local m_ceil      = m.ceil      registerdirect("m_ceil",      function() return m_ceil     (scannumeric()) end)
local m_copysign  = m.copysign  registerdirect("m_copysign",  function() return m_copysign (scanpair   ()) end)
local m_cos       = m.cos       registerdirect("m_cos",       function() return m_cos      (scannumeric()) end)
local m_cosh      = m.cosh      registerdirect("m_cosh",      function() return m_cosh     (scannumeric()) end)
local m_deg       = m.deg       registerdirect("m_deg",       function() return m_deg      (scannumeric()) end)
local m_erf       = m.erf       registerdirect("m_erf",       function() return m_erf      (scannumeric()) end)
local m_erfc      = m.erfc      registerdirect("m_erfc",      function() return m_erfc     (scannumeric()) end)
local m_exp       = m.exp       registerdirect("m_exp",       function() return m_exp      (scannumeric()) end)
local m_exp2      = m.exp2      registerdirect("m_exp2",      function() return m_exp2     (scannumeric()) end)
local m_expm1     = m.expm1     registerdirect("m_expm1",     function() return m_expm1    (scannumeric()) end)
local m_fabs      = m.fabs      registerdirect("m_fabs",      function() return m_fabs     (scannumeric()) end)
local m_fdim      = m.fdim      registerdirect("m_fdim",      function() return m_fdim     (scanpair   ()) end)
local m_floor     = m.floor     registerdirect("m_floor",     function() return m_floor    (scannumeric()) end)
local m_fma       = m.fma       registerdirect("m_fma",       function() return m_fma      (scancolor  ()) end)
local m_fmax      = m.fmax      registerdirect("m_fmax",      function() return m_fmax     (scannumeric()) end)
local m_fmin      = m.fmin      registerdirect("m_fmin",      function() return m_fmin     (scannumeric()) end)
local m_fmod      = m.fmod      registerdirect("m_fmod",      function() return m_fmod     (scanpair   ()) end)
local m_frexp     = m.frexp     registerdirect("m_frexp",     function() return m_frexp    (scannumeric()) end)
local m_gamma     = m.gamma     registerdirect("m_gamma",     function() return m_gamma    (scannumeric()) end)
local m_hypot     = m.hypot     registerdirect("m_hypot",     function() return m_hypot    (scanpair   ()) end)
local m_isfinite  = m.isfinite  registerdirect("m_isfinite",  function() return m_isfinite (scannumeric()) end)
local m_isinf     = m.isinf     registerdirect("m_isinf",     function() return m_isinf    (scannumeric()) end)
local m_isnan     = m.isnan     registerdirect("m_isnan",     function() return m_isnan    (scannumeric()) end)
local m_isnormal  = m.isnormal  registerdirect("m_isnormal",  function() return m_isnormal (scannumeric()) end)
local m_j0        = m.j0        registerdirect("m_j0",        function() return m_j0       (scannumeric()) end)
local m_j1        = m.j1        registerdirect("m_j1",        function() return m_j1       (scannumeric()) end)
local m_jn        = m.jn        registerdirect("m_jn",        function() return m_jn       (scanpair   ()) end)
local m_ldexp     = m.ldexp     registerdirect("m_ldexp",     function() return m_ldexp    (scanpair   ()) end)
local m_lgamma    = m.lgamma    registerdirect("m_lgamma",    function() return m_lgamma   (scannumeric()) end)
local m_log       = m.log       registerdirect("m_log",       function() return m_log      (scannumeric()) end)
local m_log10     = m.log10     registerdirect("m_log10",     function() return m_log10    (scannumeric()) end)
local m_log1p     = m.log1p     registerdirect("m_log1p",     function() return m_log1p    (scannumeric()) end)
local m_log2      = m.log2      registerdirect("m_log2",      function() return m_log2     (scannumeric()) end)
local m_logb      = m.logb      registerdirect("m_logb",      function() return m_logb     (scannumeric()) end)
local m_modf      = m.modf      registerdirect("m_modf",      function() return m_modf     (scannumeric()) end)
local m_nearbyint = m.nearbyint registerdirect("m_nearbyint", function() return m_nearbyint(scannumeric()) end)
local m_nextafter = m.nextafter registerdirect("m_nextafter", function() return m_nextafter(scanpair   ()) end)
local m_pow       = m.pow       registerdirect("m_pow",       function() return m_pow      (scanpair   ()) end)
local m_rad       = m.rad       registerdirect("m_rad",       function() return m_rad      (scannumeric()) end)
local m_remainder = m.remainder registerdirect("m_remainder", function() return m_remainder(scanpair   ()) end)
local m_remquo    = m.remquo    registerdirect("m_remquo",    function() return m_remquo   (scannumeric()) end)
local m_round     = m.round     registerdirect("m_round",     function() return m_round    (scannumeric()) end)
local m_scalbn    = m.scalbn    registerdirect("m_scalbn",    function() return m_scalbn   (scanpair   ()) end)
local m_sin       = m.sin       registerdirect("m_sin",       function() return m_sin      (scannumeric()) end)
local m_sinh      = m.sinh      registerdirect("m_sinh",      function() return m_sinh     (scannumeric()) end)
local m_sqrt      = m.sqrt      registerdirect("m_sqrt",      function() return m_sqrt     (scannumeric()) end)
local m_tan       = m.tan       registerdirect("m_tan",       function() return m_tan      (scannumeric()) end)
local m_tanh      = m.tanh      registerdirect("m_tanh",      function() return m_tanh     (scannumeric()) end)
local m_tgamma    = m.tgamma    registerdirect("m_tgamma",    function() return m_tgamma   (scannumeric()) end)
local m_trunc     = m.trunc     registerdirect("m_trunc",     function() return m_trunc    (scannumeric()) end)
local m_y0        = m.y0        registerdirect("m_y0",        function() return m_y0       (scannumeric()) end)
local m_y1        = m.y1        registerdirect("m_y1",        function() return m_y1       (scannumeric()) end)
local m_yn        = m.yn        registerdirect("m_yn",        function() return m_yn       (scanpair   ()) end)

if not (c and c.sin) then
    return
end

local c_topair  = c.topair
local c_totable = c.totable
local c_new     = c.new

----- c_sin    = c.sin    registerdirect("c_sin",    function() return c_totable(c_sin   (c_new(scanpair()))) end)

local c_sin    = c.sin    registerscript("c_sin",    function() return mppair(c_topair(c_sin   (c_new(scanpair())))) end)
local c_cos    = c.cos    registerscript("c_cos",    function() return mppair(c_topair(c_cos   (c_new(scanpair())))) end)
local c_tan    = c.tan    registerscript("c_tan",    function() return mppair(c_topair(c_tan   (c_new(scanpair())))) end)
local c_sinh   = c.sinh   registerscript("c_sinh",   function() return mppair(c_topair(c_sinh  (c_new(scanpair())))) end)
local c_cosh   = c.cosh   registerscript("c_cosh",   function() return mppair(c_topair(c_cosh  (c_new(scanpair())))) end)
local c_tanh   = c.tanh   registerscript("c_tanh",   function() return mppair(c_topair(c_tanh  (c_new(scanpair())))) end)

local c_asin   = c.asin   registerscript("c_asin",   function() return mppair(c_topair(c_sin   (c_new(scanpair())))) end)
local c_acos   = c.acos   registerscript("c_acos",   function() return mppair(c_topair(c_cos   (c_new(scanpair())))) end)
local c_atan   = c.atan   registerscript("c_atan",   function() return mppair(c_topair(c_tan   (c_new(scanpair())))) end)
local c_asinh  = c.asinh  registerscript("c_asinh",  function() return mppair(c_topair(c_sinh  (c_new(scanpair())))) end)
local c_acosh  = c.acosh  registerscript("c_acosh",  function() return mppair(c_topair(c_cosh  (c_new(scanpair())))) end)
local c_atanh  = c.atanh  registerscript("c_atanh",  function() return mppair(c_topair(c_tanh  (c_new(scanpair())))) end)

local c_sqrt   = c.sqrt   registerscript("c_sqrt",   function() return mppair(c_topair(c_sqrt  (c_new(scanpair())))) end)
local c_abs    = c.abs    registerscript("c_abs",    function() return        c_topair(c_abs   (c_new(scanpair())))  end)
local c_arg    = c.arg    registerscript("c_arg",    function() return        c_topair(c_arg   (c_new(scanpair())))  end)
local c_conj   = c.conj   registerscript("c_conj",   function() return mppair(c_topair(c_conj  (c_new(scanpair())))) end)
local c_exp    = c.exp    registerscript("c_exp",    function() return mppair(c_topair(c_exp   (c_new(scanpair())))) end)
local c_log    = c.log    registerscript("c_log",    function() return mppair(c_topair(c_log   (c_new(scanpair())))) end)
local c_proj   = c.proj   registerscript("c_proj",   function() return mppair(c_topair(c_proj  (c_new(scanpair())))) end)

local c_erf    = c.erf    registerscript("c_erf",    function() return mppair(c_topair(c_erf   (c_new(scanpair())))) end)
local c_erfc   = c.erfc   registerscript("c_erfc",   function() return mppair(c_topair(c_erfc  (c_new(scanpair())))) end)
local c_erfcx  = c.erfcx  registerscript("c_erfcx",  function() return mppair(c_topair(c_erfcx (c_new(scanpair())))) end)
local c_erfi   = c.erfi   registerscript("c_erfi",   function() return mppair(c_topair(c_erfi  (c_new(scanpair())))) end)
local c_dawson = c.dawson registerscript("c_dawson", function() return mppair(c_topair(c_dawson(c_new(scanpair())))) end)

local c_voigt      = c.voigt
local c_voigt_hwhm = c.voigt_hwhm

registerscript("c_voigt", function()
    return mppair(c_topair(c_voigt(c_new(scanpair()),c_new(scanpair()),c_new(scanpair()))))
end)

registerscript("c_voigt_hwhm", function()
    return mppair(c_topair(c_voigt_hwhm(c_new(scanpair()),c_new(scanpair()))))
end)

local c_pow = c.pow registerscript("c_pow", function() return mppair(c_topair(c_pow(c_new(scanpair()),c_new(scanpair())))) end)
local c_add = c.add registerscript("c_add", function() return mppair(c_topair(c_add(c_new(scanpair()),c_new(scanpair())))) end)
local c_sub = c.sub registerscript("c_sub", function() return mppair(c_topair(c_sub(c_new(scanpair()),c_new(scanpair())))) end)
local c_mul = c.mul registerscript("c_mul", function() return mppair(c_topair(c_mul(c_new(scanpair()),c_new(scanpair())))) end)
local c_div = c.div registerscript("c_div", function() return mppair(c_topair(c_div(c_new(scanpair()),c_new(scanpair())))) end)

local c_imag = c.imag registerscript("c_imag", function() return c_topair(c_imag(c_new(scanpair()))) end)
local c_real = c.real registerscript("c_real", function() return c_topair(c_real(c_new(scanpair()))) end)
local c_neg  = c.neg  registerscript("c_new",  function() return c_topair(c_neg (c_new(scanpair()))) end)