1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "cstdlib"
17 #include "napi/native_api.h"
18 #include <cmath>
19 #include <cstdlib>
20 #include <js_native_api.h>
21 #include <node_api.h>
22 
23 #define PI 3.14159265358979
24 #define HALFCIRCLE 180.0
25 #define TRUE 1
26 #define FALSE 0
27 #define ERROR (-1)
28 #define ONE 1
29 #define TWO 2
30 #define STRLENGTH 64
31 #define FAIL (-1)
32 #define SUCCESS 1
33 #define MAGICNUM (-0.5385416161050316)
34 #define MAGICYNFNUM (-0.5385416746139526)
35 #define PARAM_FAIL (-1)
36 #define PARAM_0 0
37 #define PARAM_1 1
38 #define PARAM_2 2
39 #define PARAM_3 3
40 #define PARAM_30 3.0
41 #define PARAM_UNNORMAL (-1)
42 
LLround(napi_env env, napi_callback_info info)43 static napi_value LLround(napi_env env, napi_callback_info info)
44 {
45     size_t argc = PARAM_1;
46     napi_value args[1] = {nullptr};
47     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
48     double value;
49     napi_get_value_double(env, args[0], &value);
50     int roundValue = llround(value);
51     napi_value result = nullptr;
52     napi_create_int32(env, roundValue, &result);
53     return result;
54 }
LLroundf(napi_env env, napi_callback_info info)55 static napi_value LLroundf(napi_env env, napi_callback_info info)
56 {
57     size_t argc = PARAM_1;
58     napi_value args[1] = {nullptr};
59     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
60     double value;
61     napi_get_value_double(env, args[0], &value);
62     int roundValue = llroundf(value);
63     napi_value result = nullptr;
64     napi_create_int32(env, roundValue, &result);
65     return result;
66 }
67 
LLroundl(napi_env env, napi_callback_info info)68 static napi_value LLroundl(napi_env env, napi_callback_info info)
69 {
70     size_t argc = PARAM_1;
71     napi_value args[1] = {nullptr};
72     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
73     double value;
74     napi_get_value_double(env, args[0], &value);
75     int roundValue = llroundl(value);
76     napi_value result = nullptr;
77     napi_create_int32(env, roundValue, &result);
78     return result;
79 }
80 
LLrint(napi_env env, napi_callback_info info)81 static napi_value LLrint(napi_env env, napi_callback_info info)
82 {
83     size_t argc = PARAM_1;
84     napi_value args[1] = {nullptr};
85     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
86     double value;
87     napi_get_value_double(env, args[0], &value);
88     int roundValue = llrint(value);
89     napi_value result = nullptr;
90     napi_create_int32(env, roundValue, &result);
91     return result;
92 }
LLrintf(napi_env env, napi_callback_info info)93 static napi_value LLrintf(napi_env env, napi_callback_info info)
94 {
95     size_t argc = PARAM_1;
96     napi_value args[1] = {nullptr};
97     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
98     double value;
99     napi_get_value_double(env, args[0], &value);
100     int roundValue = llrintf(value);
101     napi_value result = nullptr;
102     napi_create_int32(env, roundValue, &result);
103     return result;
104 }
LRintf(napi_env env, napi_callback_info info)105 static napi_value LRintf(napi_env env, napi_callback_info info)
106 {
107     size_t argc = PARAM_1;
108     napi_value args[1] = {nullptr};
109     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
110     double valueZero;
111     napi_get_value_double(env, args[0], &valueZero);
112     double lrintf_value = lrintf(valueZero);
113     napi_value result = nullptr;
114     napi_create_double(env, lrintf_value, &result);
115 
116     return result;
117 }
LLrintl(napi_env env, napi_callback_info info)118 static napi_value LLrintl(napi_env env, napi_callback_info info)
119 {
120     size_t argc = PARAM_1;
121     napi_value args[1] = {nullptr};
122     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
123     double value;
124     napi_get_value_double(env, args[0], &value);
125     int roundValue = llrintl(value);
126     napi_value result = nullptr;
127     napi_create_int32(env, roundValue, &result);
128     return result;
129 }
130 
Lgamma(napi_env env, napi_callback_info info)131 static napi_value Lgamma(napi_env env, napi_callback_info info)
132 {
133     size_t argc = PARAM_1;
134     napi_value args[1] = {nullptr};
135     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
136     double param, ret;
137     napi_get_value_double(env, args[0], &param);
138     ret = lgamma(param);
139     napi_value result;
140     if (HUGE_VAL == ret) {
141         napi_create_int32(env, PARAM_UNNORMAL, &result);
142     } else {
143         napi_create_double(env, ret, &result);
144     }
145     return result;
146 }
Lgammaf(napi_env env, napi_callback_info info)147 static napi_value Lgammaf(napi_env env, napi_callback_info info)
148 {
149     size_t argc = PARAM_1;
150     napi_value args[1] = {nullptr};
151     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
152     double param, ret;
153     napi_get_value_double(env, args[0], &param);
154     ret = lgammaf(param);
155     napi_value result;
156     if (HUGE_VALF == ret) {
157         napi_create_int32(env, PARAM_UNNORMAL, &result);
158     } else {
159         napi_create_double(env, ret, &result);
160     }
161     return result;
162 }
Lgammal(napi_env env, napi_callback_info info)163 static napi_value Lgammal(napi_env env, napi_callback_info info)
164 {
165     size_t argc = PARAM_1;
166     napi_value args[1] = {nullptr};
167     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
168     double param, ret;
169     napi_get_value_double(env, args[0], &param);
170     ret = lgammal(param);
171     napi_value result;
172     if (HUGE_VALL == ret) {
173         napi_create_int32(env, PARAM_UNNORMAL, &result);
174     } else {
175         napi_create_double(env, ret, &result);
176     }
177     return result;
178 }
179 
180 #define THIRTYONE 31
181 
Lgamma_r(napi_env env, napi_callback_info info)182 static napi_value Lgamma_r(napi_env env, napi_callback_info info)
183 {
184     size_t argc = PARAM_1;
185     napi_value args[1] = {nullptr};
186     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
187     double param, ret;
188     int a;
189     napi_get_value_double(env, args[0], &param);
190     ret = lgamma_r(param, &a);
191     napi_value result;
192     if (HUGE_VAL == ret) {
193         napi_create_int32(env, PARAM_UNNORMAL, &result);
194     } else {
195         napi_create_double(env, ret, &result);
196     }
197     return result;
198 }
Lgammaf_r(napi_env env, napi_callback_info info)199 static napi_value Lgammaf_r(napi_env env, napi_callback_info info)
200 {
201     size_t argc = PARAM_1;
202     napi_value args[1] = {nullptr};
203     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
204     double param, ret;
205     int a;
206     napi_get_value_double(env, args[0], &param);
207     ret = lgammaf_r(param, &a);
208     napi_value result;
209     if (HUGE_VALF == ret) {
210         napi_create_int32(env, PARAM_UNNORMAL, &result);
211     } else {
212         napi_create_double(env, ret, &result);
213     }
214     return result;
215 }
Lgammal_r(napi_env env, napi_callback_info info)216 static napi_value Lgammal_r(napi_env env, napi_callback_info info)
217 {
218     size_t argc = PARAM_1;
219     napi_value args[1] = {nullptr};
220     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
221     double param, ret;
222     int a;
223     napi_get_value_double(env, args[0], &param);
224     ret = lgammal_r(param, &a);
225     napi_value result;
226     if (HUGE_VALL == ret) {
227         napi_create_int32(env, PARAM_UNNORMAL, &result);
228     } else {
229         napi_create_double(env, ret, &result);
230     }
231     return result;
232 }
233 
Ldexp(napi_env env, napi_callback_info info)234 static napi_value Ldexp(napi_env env, napi_callback_info info)
235 {
236     size_t argc = PARAM_2;
237     napi_value args[2] = {nullptr};
238     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
239     int secondParam;
240     double firstParam;
241     napi_get_value_double(env, args[0], &firstParam);
242     napi_get_value_int32(env, args[1], &secondParam);
243     double retj = ldexp(firstParam, secondParam);
244     napi_value result;
245     napi_create_double(env, retj, &result);
246     return result;
247 }
248 
Ldexpl(napi_env env, napi_callback_info info)249 static napi_value Ldexpl(napi_env env, napi_callback_info info)
250 {
251     size_t argc = PARAM_2;
252     napi_value args[2] = {nullptr};
253     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
254     int secondParam;
255     double firstParam;
256     napi_get_value_double(env, args[0], &firstParam);
257     napi_get_value_int32(env, args[1], &secondParam);
258     double retj = ldexpl(firstParam, secondParam);
259     napi_value result;
260     napi_create_double(env, retj, &result);
261     return result;
262 }
263 
Ldexpf(napi_env env, napi_callback_info info)264 static napi_value Ldexpf(napi_env env, napi_callback_info info)
265 {
266     size_t argc = PARAM_2;
267     napi_value args[2] = {nullptr};
268     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
269     int secondParam;
270     double firstParam;
271     napi_get_value_double(env, args[0], &firstParam);
272     napi_get_value_int32(env, args[1], &secondParam);
273     double retj = ldexpf(firstParam, secondParam);
274     napi_value result;
275     napi_create_double(env, retj, &result);
276     return result;
277 }
278 
J0(napi_env env, napi_callback_info info)279 static napi_value J0(napi_env env, napi_callback_info info)
280 {
281     size_t argc = PARAM_1;
282     napi_value args[1] = {nullptr};
283     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
284     double expect;
285     napi_get_value_double(env, args[0], &expect);
286     double retj = j0(expect);
287     napi_value result;
288     napi_create_double(env, retj, &result);
289     return result;
290 }
291 
J0f(napi_env env, napi_callback_info info)292 static napi_value J0f(napi_env env, napi_callback_info info)
293 {
294     size_t argc = PARAM_1;
295     napi_value args[1] = {nullptr};
296     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
297     double expect;
298     napi_get_value_double(env, args[0], &expect);
299     double retj = j0f(expect);
300     napi_value result;
301     napi_create_double(env, retj, &result);
302     return result;
303 }
304 
J1(napi_env env, napi_callback_info info)305 static napi_value J1(napi_env env, napi_callback_info info)
306 {
307     size_t argc = PARAM_1;
308     napi_value args[1] = {nullptr};
309     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
310     double expect;
311     napi_get_value_double(env, args[0], &expect);
312     double retj = j1(expect);
313     napi_value result;
314     napi_create_double(env, retj, &result);
315     return result;
316 }
317 
J1f(napi_env env, napi_callback_info info)318 static napi_value J1f(napi_env env, napi_callback_info info)
319 {
320     size_t argc = PARAM_1;
321     napi_value args[1] = {nullptr};
322     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
323     double expect;
324     napi_get_value_double(env, args[0], &expect);
325     double retj = j1f(expect);
326     napi_value result;
327     napi_create_double(env, retj, &result);
328     return result;
329 }
330 
Jn(napi_env env, napi_callback_info info)331 static napi_value Jn(napi_env env, napi_callback_info info)
332 {
333     size_t argc = PARAM_2;
334     napi_value args[2] = {nullptr};
335     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
336     double expect;
337     int n;
338     napi_get_value_int32(env, args[0], &n);
339     napi_get_value_double(env, args[1], &expect);
340     double retj = jn(n, expect);
341     napi_value result;
342     napi_create_double(env, retj, &result);
343     return result;
344 }
345 
Jnf(napi_env env, napi_callback_info info)346 static napi_value Jnf(napi_env env, napi_callback_info info)
347 {
348     size_t argc = PARAM_2;
349     napi_value args[2] = {nullptr};
350     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
351     double expect;
352     int n;
353     napi_get_value_int32(env, args[0], &n);
354     napi_get_value_double(env, args[1], &expect);
355     double retj = jnf(n, expect);
356     napi_value result;
357     napi_create_double(env, retj, &result);
358     return result;
359 }
360 
ASin(napi_env env, napi_callback_info info)361 static napi_value ASin(napi_env env, napi_callback_info info)
362 {
363     size_t argc = PARAM_1;
364     napi_value args[1] = {nullptr};
365     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
366     double valueZero;
367     napi_get_value_double(env, args[0], &valueZero);
368     napi_value result = nullptr;
369 
370     double resultValue = asin(valueZero);
371     int resultTrue = PARAM_1;
372     if (resultValue <= M_PI && resultValue >= -M_PI) {
373         napi_create_double(env, resultTrue, &result);
374     } else {
375         napi_create_double(env, resultValue, &result);
376     }
377 
378     return result;
379 }
380 
ASinF(napi_env env, napi_callback_info info)381 static napi_value ASinF(napi_env env, napi_callback_info info)
382 {
383     size_t argc = PARAM_1;
384     napi_value args[1] = {nullptr};
385     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
386     double valueZero;
387     napi_get_value_double(env, args[0], &valueZero);
388     napi_value result = nullptr;
389 
390     double resultValue = asinf(valueZero);
391     int resultTrue = PARAM_1;
392     if (resultValue <= M_PI && resultValue >= -M_PI) {
393         napi_create_double(env, resultTrue, &result);
394     } else {
395         napi_create_double(env, resultValue, &result);
396     }
397 
398     return result;
399 }
400 
ASinL(napi_env env, napi_callback_info info)401 static napi_value ASinL(napi_env env, napi_callback_info info)
402 {
403     size_t argc = PARAM_1;
404     napi_value args[1] = {nullptr};
405     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
406     double valueZero;
407     napi_get_value_double(env, args[0], &valueZero);
408     napi_value result = nullptr;
409 
410     double resultValue = asinl(valueZero);
411     int resultTrue = PARAM_1;
412     if (resultValue <= M_PI && resultValue >= -M_PI) {
413         napi_create_double(env, resultTrue, &result);
414     } else {
415         napi_create_double(env, resultValue, &result);
416     }
417 
418     return result;
419 }
420 
ASinH(napi_env env, napi_callback_info info)421 static napi_value ASinH(napi_env env, napi_callback_info info)
422 {
423     size_t argc = PARAM_1;
424     napi_value args[1] = {nullptr};
425     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
426     double valueZero;
427     napi_get_value_double(env, args[0], &valueZero);
428     napi_value result = nullptr;
429 
430     double resultValue = asinh(valueZero);
431     napi_create_double(env, resultValue, &result);
432 
433     return result;
434 }
435 
ASinHF(napi_env env, napi_callback_info info)436 static napi_value ASinHF(napi_env env, napi_callback_info info)
437 {
438     size_t argc = PARAM_1;
439     napi_value args[1] = {nullptr};
440     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
441     double valueZero;
442     napi_get_value_double(env, args[0], &valueZero);
443     napi_value result = nullptr;
444 
445     double resultValue = asinhf(valueZero);
446     napi_create_double(env, resultValue, &result);
447 
448     return result;
449 }
450 
ASinHL(napi_env env, napi_callback_info info)451 static napi_value ASinHL(napi_env env, napi_callback_info info)
452 {
453     size_t argc = PARAM_1;
454     napi_value args[1] = {nullptr};
455     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
456     double valueZero;
457     napi_get_value_double(env, args[0], &valueZero);
458     napi_value result = nullptr;
459 
460     double resultValue = asinhl(valueZero);
461     napi_create_double(env, resultValue, &result);
462 
463     return result;
464 }
465 
ACos(napi_env env, napi_callback_info info)466 static napi_value ACos(napi_env env, napi_callback_info info)
467 {
468     size_t argc = PARAM_1;
469     napi_value args[1] = {nullptr};
470     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
471     double valueZero;
472     napi_get_value_double(env, args[0], &valueZero);
473     napi_value result = nullptr;
474 
475     double resultValue = acos(valueZero);
476     napi_create_double(env, resultValue, &result);
477 
478     return result;
479 }
480 
ACosF(napi_env env, napi_callback_info info)481 static napi_value ACosF(napi_env env, napi_callback_info info)
482 {
483     size_t argc = PARAM_1;
484     napi_value args[1] = {nullptr};
485     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
486     double valueZero;
487     napi_get_value_double(env, args[0], &valueZero);
488     napi_value result = nullptr;
489 
490     double resultValue = acosf(valueZero);
491     napi_create_double(env, resultValue, &result);
492 
493     return result;
494 }
495 
ACosL(napi_env env, napi_callback_info info)496 static napi_value ACosL(napi_env env, napi_callback_info info)
497 {
498     size_t argc = PARAM_1;
499     napi_value args[1] = {nullptr};
500     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
501     double valueZero;
502     napi_get_value_double(env, args[0], &valueZero);
503     napi_value result = nullptr;
504 
505     double resultValue = acosl(valueZero);
506     napi_create_double(env, resultValue, &result);
507 
508     return result;
509 }
510 
ACosH(napi_env env, napi_callback_info info)511 static napi_value ACosH(napi_env env, napi_callback_info info)
512 {
513     size_t argc = PARAM_1;
514     napi_value args[1] = {nullptr};
515     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
516     double valueZero;
517     napi_get_value_double(env, args[0], &valueZero);
518     napi_value result = nullptr;
519 
520     double resultValue = acosh(valueZero);
521     napi_create_double(env, resultValue, &result);
522 
523     return result;
524 }
525 
ACosHL(napi_env env, napi_callback_info info)526 static napi_value ACosHL(napi_env env, napi_callback_info info)
527 {
528     size_t argc = PARAM_1;
529     napi_value args[1] = {nullptr};
530     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
531     double valueZero;
532     napi_get_value_double(env, args[0], &valueZero);
533     napi_value result = nullptr;
534 
535     double resultValue = acoshl(valueZero);
536     napi_create_double(env, resultValue, &result);
537 
538     return result;
539 }
540 
ACosHF(napi_env env, napi_callback_info info)541 static napi_value ACosHF(napi_env env, napi_callback_info info)
542 {
543     size_t argc = PARAM_1;
544     napi_value args[1] = {nullptr};
545     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
546     double valueZero;
547     napi_get_value_double(env, args[0], &valueZero);
548     napi_value result = nullptr;
549 
550     double resultValue = acoshf(valueZero);
551     napi_create_double(env, resultValue, &result);
552 
553     return result;
554 }
555 
ATan(napi_env env, napi_callback_info info)556 static napi_value ATan(napi_env env, napi_callback_info info)
557 {
558     size_t argc = PARAM_1;
559     napi_value args[1] = {nullptr};
560     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
561     double valueZero;
562     napi_get_value_double(env, args[0], &valueZero);
563     napi_value result = nullptr;
564 
565     double resultValue = atan(valueZero);
566     int resultTrue = TRUE;
567     if (valueZero == ERROR || valueZero == TRUE) {
568         if (resultValue <= M_PI_2 && resultValue >= -M_PI_2) {
569             napi_create_double(env, resultTrue, &result);
570         }
571     } else {
572         napi_create_double(env, resultValue, &result);
573     }
574     return result;
575 }
576 
ATanF(napi_env env, napi_callback_info info)577 static napi_value ATanF(napi_env env, napi_callback_info info)
578 {
579     size_t argc = PARAM_1;
580     napi_value args[1] = {nullptr};
581     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
582     double valueZero;
583     napi_get_value_double(env, args[0], &valueZero);
584     napi_value result = nullptr;
585 
586     double resultValue = atanf(valueZero);
587     int resultTrue = TRUE;
588     if (valueZero == ERROR || valueZero == TRUE) {
589         if (resultValue <= M_PI_2 && resultValue >= -M_PI_2) {
590             napi_create_double(env, resultTrue, &result);
591         }
592     } else {
593         napi_create_double(env, resultValue, &result);
594     }
595     return result;
596 }
597 
ATanL(napi_env env, napi_callback_info info)598 static napi_value ATanL(napi_env env, napi_callback_info info)
599 {
600     size_t argc = PARAM_1;
601     napi_value args[1] = {nullptr};
602     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
603     double valueZero;
604     int resultTrue = PARAM_1;
605     napi_get_value_double(env, args[0], &valueZero);
606     napi_value result = nullptr;
607     double resultValue = atanl(valueZero);
608     if (resultValue <= M_PI_2 && resultValue >= -M_PI_2) {
609         napi_create_double(env, resultTrue, &result);
610         if (valueZero == INFINITY || valueZero == -INFINITY) {
611             napi_create_double(env, resultValue, &result);
612         }
613     } else {
614         napi_create_double(env, resultValue, &result);
615     }
616     return result;
617 }
618 
ATan2(napi_env env, napi_callback_info info)619 static napi_value ATan2(napi_env env, napi_callback_info info)
620 {
621     size_t argc = PARAM_2;
622     napi_value args[2] = {nullptr};
623     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
624     double valueZero;
625     double firstParam;
626     napi_get_value_double(env, args[0], &valueZero);
627     napi_get_value_double(env, args[1], &firstParam);
628     napi_value result = nullptr;
629 
630     double resultValue = atan2(valueZero, firstParam);
631     napi_create_double(env, resultValue, &result);
632 
633     return result;
634 }
635 
ATan2F(napi_env env, napi_callback_info info)636 static napi_value ATan2F(napi_env env, napi_callback_info info)
637 {
638     size_t argc = PARAM_2;
639     napi_value args[2] = {nullptr};
640     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
641     double valueZero;
642     double firstParam;
643     napi_get_value_double(env, args[0], &valueZero);
644     napi_get_value_double(env, args[1], &firstParam);
645     napi_value result = nullptr;
646 
647     double resultValue = atan2f(valueZero, firstParam);
648     napi_create_double(env, resultValue, &result);
649 
650     return result;
651 }
652 
ATan2L(napi_env env, napi_callback_info info)653 static napi_value ATan2L(napi_env env, napi_callback_info info)
654 {
655     size_t argc = PARAM_2;
656     napi_value args[2] = {nullptr};
657     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
658     double valueZero;
659     double firstParam;
660     napi_get_value_double(env, args[0], &valueZero);
661     napi_get_value_double(env, args[1], &firstParam);
662     napi_value result = nullptr;
663 
664     double resultValue = atan2l(valueZero, firstParam);
665     napi_create_double(env, resultValue, &result);
666 
667     return result;
668 }
669 
Fmod(napi_env env, napi_callback_info info)670 static napi_value Fmod(napi_env env, napi_callback_info info)
671 {
672     size_t argc = PARAM_2;
673     napi_value args[2] = {nullptr, nullptr};
674     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
675     double firstParam;
676     napi_get_value_double(env, args[0], &firstParam);
677     double secondParam;
678     napi_get_value_double(env, args[1], &secondParam);
679     double getResult = fmod(firstParam, secondParam);
680     napi_value result;
681     napi_create_double(env, getResult, &result);
682     return result;
683 }
684 
FMin(napi_env env, napi_callback_info info)685 static napi_value FMin(napi_env env, napi_callback_info info)
686 {
687     size_t argc = PARAM_2;
688     napi_value args[2] = {nullptr, nullptr};
689     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
690     double firstParam;
691     napi_get_value_double(env, args[0], &firstParam);
692     double secondParam;
693     napi_get_value_double(env, args[1], &secondParam);
694     double getResult = fmin(firstParam, secondParam);
695     napi_value result;
696     napi_create_double(env, getResult, &result);
697     return result;
698 }
699 
FMax(napi_env env, napi_callback_info info)700 static napi_value FMax(napi_env env, napi_callback_info info)
701 {
702     size_t argc = PARAM_2;
703     napi_value args[2] = {nullptr, nullptr};
704     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
705     double firstParam;
706     napi_get_value_double(env, args[0], &firstParam);
707     double secondParam;
708     napi_get_value_double(env, args[1], &secondParam);
709     double getResult = fmax(firstParam, secondParam);
710     napi_value result;
711     napi_create_double(env, getResult, &result);
712     return result;
713 }
714 
Fma(napi_env env, napi_callback_info info)715 static napi_value Fma(napi_env env, napi_callback_info info)
716 {
717     size_t argc = PARAM_3;
718     napi_value args[3] = {nullptr, nullptr, nullptr};
719     int indexSecond = TWO, indexFirst = ONE, indexZero = PARAM_0;
720     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
721     double firstParam;
722     napi_get_value_double(env, args[indexZero], &firstParam);
723     double secondParam;
724     napi_get_value_double(env, args[indexFirst], &secondParam);
725     double thirdParam;
726     napi_get_value_double(env, args[indexSecond], &thirdParam);
727     double getResult = fma(firstParam, secondParam, thirdParam);
728     napi_value result;
729     napi_create_double(env, getResult, &result);
730     return result;
731 }
732 
Floor(napi_env env, napi_callback_info info)733 static napi_value Floor(napi_env env, napi_callback_info info)
734 {
735     size_t argc = PARAM_2;
736     napi_value args[2] = {nullptr, nullptr};
737     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
738     double firstParam;
739     napi_get_value_double(env, args[0], &firstParam);
740     double getResult = floor(firstParam);
741     napi_value result;
742     napi_create_double(env, getResult, &result);
743     return result;
744 }
745 
FDim(napi_env env, napi_callback_info info)746 static napi_value FDim(napi_env env, napi_callback_info info)
747 {
748     size_t argc = PARAM_2;
749     napi_value args[2] = {nullptr, nullptr};
750     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
751     double firstParam;
752     napi_get_value_double(env, args[0], &firstParam);
753     double secondParam;
754     napi_get_value_double(env, args[1], &secondParam);
755     double getResult = fdim(firstParam, secondParam);
756     napi_value result;
757     napi_create_double(env, getResult, &result);
758     return result;
759 }
760 
FAbs(napi_env env, napi_callback_info info)761 static napi_value FAbs(napi_env env, napi_callback_info info)
762 {
763     size_t argc = PARAM_1;
764     napi_value args[1] = {nullptr};
765     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
766     double firstParam;
767     napi_get_value_double(env, args[0], &firstParam);
768     double getResult = fabs(firstParam);
769     napi_value result;
770     napi_create_double(env, getResult, &result);
771     return result;
772 }
773 
Exp(napi_env env, napi_callback_info info)774 static napi_value Exp(napi_env env, napi_callback_info info)
775 {
776     size_t argc = PARAM_1;
777     napi_value args[1] = {nullptr};
778     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
779     double firstParam;
780     napi_get_value_double(env, args[0], &firstParam);
781     double getResult = exp(firstParam);
782     napi_value result;
783     napi_create_double(env, getResult, &result);
784     return result;
785 }
786 
CopySignL(napi_env env, napi_callback_info info)787 static napi_value CopySignL(napi_env env, napi_callback_info info)
788 {
789     size_t argc = PARAM_2;
790     napi_value args[2] = {nullptr, nullptr};
791     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
792     double firstParam;
793     napi_get_value_double(env, args[0], &firstParam);
794     double secondParam;
795     napi_get_value_double(env, args[1], &secondParam);
796     double getResult = copysignl(firstParam, secondParam);
797     napi_value result;
798     napi_create_double(env, getResult, &result);
799     return result;
800 }
801 
CopySignF(napi_env env, napi_callback_info info)802 static napi_value CopySignF(napi_env env, napi_callback_info info)
803 {
804     size_t argc = PARAM_2;
805     napi_value args[2] = {nullptr, nullptr};
806     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
807     double firstParam;
808     napi_get_value_double(env, args[0], &firstParam);
809     double secondParam;
810     napi_get_value_double(env, args[1], &secondParam);
811     double getResult = copysignf(firstParam, secondParam);
812     napi_value result;
813     napi_create_double(env, getResult, &result);
814     return result;
815 }
816 
CopySign(napi_env env, napi_callback_info info)817 static napi_value CopySign(napi_env env, napi_callback_info info)
818 {
819     size_t argc = PARAM_2;
820     napi_value args[2] = {nullptr, nullptr};
821     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
822     double firstParam;
823     napi_get_value_double(env, args[0], &firstParam);
824     double secondParam;
825     napi_get_value_double(env, args[1], &secondParam);
826     double getResult = copysign(firstParam, secondParam);
827     napi_value result;
828     napi_create_double(env, getResult, &result);
829     return result;
830 }
831 
Erf(napi_env env, napi_callback_info info)832 static napi_value Erf(napi_env env, napi_callback_info info)
833 {
834     size_t argc = PARAM_1;
835     napi_value args[1] = {nullptr};
836     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
837     double firstParam;
838     napi_get_value_double(env, args[0], &firstParam);
839     double getResult = erf(firstParam);
840     napi_value result;
841     napi_create_double(env, getResult, &result);
842     return result;
843 }
844 
Cos(napi_env env, napi_callback_info info)845 static napi_value Cos(napi_env env, napi_callback_info info)
846 {
847     size_t argc = PARAM_1;
848     napi_value args[1] = {nullptr};
849     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
850     double firstParam;
851     napi_get_value_double(env, args[0], &firstParam);
852     double getResult = cos(firstParam * PI / HALFCIRCLE);
853     napi_value result = nullptr;
854     napi_create_double(env, getResult, &result);
855     return result;
856 }
857 
Cosh(napi_env env, napi_callback_info info)858 static napi_value Cosh(napi_env env, napi_callback_info info)
859 {
860     size_t argc = PARAM_1;
861     napi_value args[1] = {nullptr};
862     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
863     double firstParam;
864     napi_get_value_double(env, args[0], &firstParam);
865     double getResult = cosh(firstParam * PI / HALFCIRCLE);
866     napi_value result = nullptr;
867     napi_create_double(env, getResult, &result);
868     return result;
869 }
870 
Exp2(napi_env env, napi_callback_info info)871 static napi_value Exp2(napi_env env, napi_callback_info info)
872 {
873     size_t argc = PARAM_1;
874     napi_value args[1] = {nullptr};
875     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
876     double firstParam;
877     napi_get_value_double(env, args[0], &firstParam);
878     double getResult = exp2(firstParam);
879     napi_value result;
880     napi_create_double(env, getResult, &result);
881     return result;
882 }
883 
ExpM1(napi_env env, napi_callback_info info)884 static napi_value ExpM1(napi_env env, napi_callback_info info)
885 {
886     size_t argc = PARAM_1;
887     napi_value args[1] = {nullptr};
888     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
889     double firstParam;
890     napi_get_value_double(env, args[0], &firstParam);
891     double getResult = expm1(firstParam);
892     napi_value result;
893     napi_create_double(env, getResult, &result);
894     return result;
895 }
896 
FmodF(napi_env env, napi_callback_info info)897 static napi_value FmodF(napi_env env, napi_callback_info info)
898 {
899     size_t argc = PARAM_2;
900     napi_value args[2] = {nullptr, nullptr};
901     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
902     double firstParam;
903     napi_get_value_double(env, args[0], &firstParam);
904     double secondParam;
905     napi_get_value_double(env, args[1], &secondParam);
906     double getResult = fmodf(firstParam, secondParam);
907     napi_value result;
908     napi_create_double(env, getResult, &result);
909     return result;
910 }
911 
FmodL(napi_env env, napi_callback_info info)912 static napi_value FmodL(napi_env env, napi_callback_info info)
913 {
914     size_t argc = PARAM_2;
915     napi_value args[2] = {nullptr, nullptr};
916     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
917     double firstParam;
918     napi_get_value_double(env, args[0], &firstParam);
919     double secondParam;
920     napi_get_value_double(env, args[1], &secondParam);
921     double getResult = fmodl(firstParam, secondParam);
922     napi_value result;
923     napi_create_double(env, getResult, &result);
924     return result;
925 }
926 
FMinF(napi_env env, napi_callback_info info)927 static napi_value FMinF(napi_env env, napi_callback_info info)
928 {
929     size_t argc = PARAM_2;
930     napi_value args[2] = {nullptr, nullptr};
931     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
932     double firstParam;
933     napi_get_value_double(env, args[0], &firstParam);
934     double secondParam;
935     napi_get_value_double(env, args[1], &secondParam);
936     double getResult = fminf(firstParam, secondParam);
937     napi_value result;
938     napi_create_double(env, getResult, &result);
939     return result;
940 }
941 
FMinL(napi_env env, napi_callback_info info)942 static napi_value FMinL(napi_env env, napi_callback_info info)
943 {
944     size_t argc = PARAM_2;
945     napi_value args[2] = {nullptr, nullptr};
946     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
947     double firstParam;
948     napi_get_value_double(env, args[0], &firstParam);
949     double secondParam;
950     napi_get_value_double(env, args[1], &secondParam);
951     double getResult = fminl(firstParam, secondParam);
952     napi_value result;
953     napi_create_double(env, getResult, &result);
954     return result;
955 }
956 
FMaxF(napi_env env, napi_callback_info info)957 static napi_value FMaxF(napi_env env, napi_callback_info info)
958 {
959     size_t argc = PARAM_2;
960     napi_value args[2] = {nullptr, nullptr};
961     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
962     double firstParam;
963     napi_get_value_double(env, args[0], &firstParam);
964     double secondParam;
965     napi_get_value_double(env, args[1], &secondParam);
966     double getResult = fmaxf(firstParam, secondParam);
967     napi_value result;
968     napi_create_double(env, getResult, &result);
969     return result;
970 }
971 
FMaxL(napi_env env, napi_callback_info info)972 static napi_value FMaxL(napi_env env, napi_callback_info info)
973 {
974     size_t argc = PARAM_2;
975     napi_value args[2] = {nullptr, nullptr};
976     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
977     double firstParam;
978     napi_get_value_double(env, args[0], &firstParam);
979     double secondParam;
980     napi_get_value_double(env, args[1], &secondParam);
981     double getResult = fmaxl(firstParam, secondParam);
982     napi_value result;
983     napi_create_double(env, getResult, &result);
984     return result;
985 }
986 
FmaF(napi_env env, napi_callback_info info)987 static napi_value FmaF(napi_env env, napi_callback_info info)
988 {
989     size_t argc = PARAM_3;
990     napi_value args[3] = {nullptr, nullptr, nullptr};
991     int indexSecond = TWO, indexFirst = ONE, indexZero = PARAM_0;
992     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
993     double firstParam;
994     napi_get_value_double(env, args[indexZero], &firstParam);
995     double secondParam;
996     napi_get_value_double(env, args[indexFirst], &secondParam);
997     double thirdParam;
998     napi_get_value_double(env, args[indexSecond], &thirdParam);
999     double getResult = fmaf(firstParam, secondParam, thirdParam);
1000     napi_value result;
1001     napi_create_double(env, getResult, &result);
1002     return result;
1003 }
1004 
FmaL(napi_env env, napi_callback_info info)1005 static napi_value FmaL(napi_env env, napi_callback_info info)
1006 {
1007     size_t argc = PARAM_3;
1008     napi_value args[3] = {nullptr, nullptr, nullptr};
1009     int indexSecond = TWO, indexFirst = ONE, indexZero = PARAM_0;
1010     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1011     double firstParam;
1012     napi_get_value_double(env, args[indexZero], &firstParam);
1013     double secondParam;
1014     napi_get_value_double(env, args[indexFirst], &secondParam);
1015     double thirdParam;
1016     napi_get_value_double(env, args[indexSecond], &thirdParam);
1017     double getResult = fmal(firstParam, secondParam, thirdParam);
1018     napi_value result;
1019     napi_create_double(env, getResult, &result);
1020     return result;
1021 }
1022 
FloorF(napi_env env, napi_callback_info info)1023 static napi_value FloorF(napi_env env, napi_callback_info info)
1024 {
1025     size_t argc = PARAM_2;
1026     napi_value args[2] = {nullptr, nullptr};
1027     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1028     double firstParam;
1029     napi_get_value_double(env, args[0], &firstParam);
1030     double getResult = floorf(firstParam);
1031     napi_value result;
1032     napi_create_double(env, getResult, &result);
1033     return result;
1034 }
1035 
FloorL(napi_env env, napi_callback_info info)1036 static napi_value FloorL(napi_env env, napi_callback_info info)
1037 {
1038     size_t argc = PARAM_2;
1039     napi_value args[2] = {nullptr, nullptr};
1040     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1041     double firstParam;
1042     napi_get_value_double(env, args[0], &firstParam);
1043     double getResult = floorl(firstParam);
1044     napi_value result;
1045     napi_create_double(env, getResult, &result);
1046     return result;
1047 }
1048 
FDimF(napi_env env, napi_callback_info info)1049 static napi_value FDimF(napi_env env, napi_callback_info info)
1050 {
1051     size_t argc = PARAM_2;
1052     napi_value args[2] = {nullptr, nullptr};
1053     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1054     double firstParam;
1055     napi_get_value_double(env, args[0], &firstParam);
1056     double secondParam;
1057     napi_get_value_double(env, args[1], &secondParam);
1058     double getResult = fdimf(firstParam, secondParam);
1059     napi_value result;
1060     napi_create_double(env, getResult, &result);
1061     return result;
1062 }
1063 
FDimL(napi_env env, napi_callback_info info)1064 static napi_value FDimL(napi_env env, napi_callback_info info)
1065 {
1066     size_t argc = PARAM_2;
1067     napi_value args[2] = {nullptr, nullptr};
1068     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1069     double firstParam;
1070     napi_get_value_double(env, args[0], &firstParam);
1071     double secondParam;
1072     napi_get_value_double(env, args[1], &secondParam);
1073     double getResult = fdiml(firstParam, secondParam);
1074     napi_value result;
1075     napi_create_double(env, getResult, &result);
1076     return result;
1077 }
1078 
FAbsL(napi_env env, napi_callback_info info)1079 static napi_value FAbsL(napi_env env, napi_callback_info info)
1080 {
1081     size_t argc = PARAM_1;
1082     napi_value args[1] = {nullptr};
1083     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1084     double firstParam;
1085     napi_get_value_double(env, args[0], &firstParam);
1086     double getResult = fabsl(firstParam);
1087     napi_value result;
1088     napi_create_double(env, getResult, &result);
1089     return result;
1090 }
1091 
FAbsF(napi_env env, napi_callback_info info)1092 static napi_value FAbsF(napi_env env, napi_callback_info info)
1093 {
1094     size_t argc = PARAM_1;
1095     napi_value args[1] = {nullptr};
1096     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1097     double firstParam;
1098     napi_get_value_double(env, args[0], &firstParam);
1099     float getVOne = firstParam;
1100     float getResultF = fabsf(getVOne);
1101     double getResult = getResultF;
1102     napi_value result;
1103     napi_create_double(env, getResult, &result);
1104     return result;
1105 }
1106 
Ceil(napi_env env, napi_callback_info info)1107 static napi_value Ceil(napi_env env, napi_callback_info info)
1108 {
1109     size_t argc = PARAM_1;
1110     napi_value args[1] = {nullptr};
1111     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1112     double firstParam;
1113     napi_get_value_double(env, args[0], &firstParam);
1114     double getResult = ceil(firstParam);
1115     napi_value result;
1116     napi_create_double(env, getResult, &result);
1117     return result;
1118 }
1119 
CeilF(napi_env env, napi_callback_info info)1120 static napi_value CeilF(napi_env env, napi_callback_info info)
1121 {
1122     size_t argc = PARAM_1;
1123     napi_value args[1] = {nullptr};
1124     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1125     double firstParam;
1126     napi_get_value_double(env, args[0], &firstParam);
1127     double getResult = ceilf(firstParam);
1128     napi_value result;
1129     napi_create_double(env, getResult, &result);
1130     return result;
1131 }
1132 
CeilL(napi_env env, napi_callback_info info)1133 static napi_value CeilL(napi_env env, napi_callback_info info)
1134 {
1135     size_t argc = PARAM_1;
1136     napi_value args[1] = {nullptr};
1137     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1138     double firstParam;
1139     napi_get_value_double(env, args[0], &firstParam);
1140     double getResult = ceill(firstParam);
1141     napi_value result;
1142     napi_create_double(env, getResult, &result);
1143     return result;
1144 }
1145 
ExpM1f(napi_env env, napi_callback_info info)1146 static napi_value ExpM1f(napi_env env, napi_callback_info info)
1147 {
1148     size_t argc = PARAM_1;
1149     napi_value args[1] = {nullptr};
1150     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1151     double firstParam;
1152     napi_get_value_double(env, args[0], &firstParam);
1153     double getResult = expm1f(firstParam);
1154     napi_value result;
1155     napi_create_double(env, getResult, &result);
1156     return result;
1157 }
1158 
ExpM1l(napi_env env, napi_callback_info info)1159 static napi_value ExpM1l(napi_env env, napi_callback_info info)
1160 {
1161     size_t argc = PARAM_1;
1162     napi_value args[1] = {nullptr};
1163     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1164     double firstParam;
1165     napi_get_value_double(env, args[0], &firstParam);
1166     double getResult = expm1l(firstParam);
1167     napi_value result;
1168     napi_create_double(env, getResult, &result);
1169     return result;
1170 }
1171 
ExpF(napi_env env, napi_callback_info info)1172 static napi_value ExpF(napi_env env, napi_callback_info info)
1173 {
1174     size_t argc = PARAM_1;
1175     napi_value args[1] = {nullptr};
1176     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1177     double firstParam;
1178     napi_get_value_double(env, args[0], &firstParam);
1179     double getResult = expf(firstParam);
1180     napi_value result;
1181     napi_create_double(env, getResult, &result);
1182     return result;
1183 }
1184 
ExpL(napi_env env, napi_callback_info info)1185 static napi_value ExpL(napi_env env, napi_callback_info info)
1186 {
1187     size_t argc = PARAM_1;
1188     napi_value args[1] = {nullptr};
1189     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1190     double firstParam;
1191     napi_get_value_double(env, args[0], &firstParam);
1192     double getResult = expl(firstParam);
1193     napi_value result;
1194     napi_create_double(env, getResult, &result);
1195     return result;
1196 }
1197 
Exp2f(napi_env env, napi_callback_info info)1198 static napi_value Exp2f(napi_env env, napi_callback_info info)
1199 {
1200     size_t argc = PARAM_1;
1201     napi_value args[1] = {nullptr};
1202     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1203     double firstParam;
1204     napi_get_value_double(env, args[0], &firstParam);
1205     double getResult = exp2f(firstParam);
1206     napi_value result;
1207     napi_create_double(env, getResult, &result);
1208     return result;
1209 }
1210 
Exp2l(napi_env env, napi_callback_info info)1211 static napi_value Exp2l(napi_env env, napi_callback_info info)
1212 {
1213     size_t argc = PARAM_1;
1214     napi_value args[1] = {nullptr};
1215     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1216     double firstParam;
1217     napi_get_value_double(env, args[0], &firstParam);
1218     double getResult = exp2l(firstParam);
1219     napi_value result;
1220     napi_create_double(env, getResult, &result);
1221     return result;
1222 }
1223 
ErfC(napi_env env, napi_callback_info info)1224 static napi_value ErfC(napi_env env, napi_callback_info info)
1225 {
1226     size_t argc = PARAM_1;
1227     napi_value args[1] = {nullptr};
1228     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1229     double firstParam;
1230     napi_get_value_double(env, args[0], &firstParam);
1231     double getResult = erfc(firstParam);
1232     napi_value result;
1233     napi_create_double(env, getResult, &result);
1234     return result;
1235 }
1236 
ErfCf(napi_env env, napi_callback_info info)1237 static napi_value ErfCf(napi_env env, napi_callback_info info)
1238 {
1239     size_t argc = PARAM_1;
1240     napi_value args[1] = {nullptr};
1241     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1242     double firstParam;
1243     napi_get_value_double(env, args[0], &firstParam);
1244     double getResult = erfcf(firstParam);
1245     napi_value result;
1246     napi_create_double(env, getResult, &result);
1247     return result;
1248 }
1249 
ErfCl(napi_env env, napi_callback_info info)1250 static napi_value ErfCl(napi_env env, napi_callback_info info)
1251 {
1252     size_t argc = PARAM_1;
1253     napi_value args[1] = {nullptr};
1254     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1255     double firstParam;
1256     napi_get_value_double(env, args[0], &firstParam);
1257     double getResult = erfcl(firstParam);
1258     napi_value result;
1259     napi_create_double(env, getResult, &result);
1260     return result;
1261 }
1262 
ErfF(napi_env env, napi_callback_info info)1263 static napi_value ErfF(napi_env env, napi_callback_info info)
1264 {
1265     size_t argc = PARAM_1;
1266     napi_value args[1] = {nullptr};
1267     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1268     double firstParam;
1269     napi_get_value_double(env, args[0], &firstParam);
1270     double getResult = erff(firstParam);
1271     napi_value result;
1272     napi_create_double(env, getResult, &result);
1273     return result;
1274 }
1275 
ErfL(napi_env env, napi_callback_info info)1276 static napi_value ErfL(napi_env env, napi_callback_info info)
1277 {
1278     size_t argc = PARAM_1;
1279     napi_value args[1] = {nullptr};
1280     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1281     double firstParam;
1282     napi_get_value_double(env, args[0], &firstParam);
1283     double getResult = erfl(firstParam);
1284     napi_value result;
1285     napi_create_double(env, getResult, &result);
1286     return result;
1287 }
1288 
CosF(napi_env env, napi_callback_info info)1289 static napi_value CosF(napi_env env, napi_callback_info info)
1290 {
1291     size_t argc = PARAM_1;
1292     napi_value args[1] = {nullptr};
1293     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1294     double firstParam;
1295     napi_get_value_double(env, args[0], &firstParam);
1296     double getResult = cosf(firstParam * PI / HALFCIRCLE);
1297     napi_value result = nullptr;
1298     napi_create_double(env, getResult, &result);
1299     return result;
1300 }
1301 
CosL(napi_env env, napi_callback_info info)1302 static napi_value CosL(napi_env env, napi_callback_info info)
1303 {
1304     size_t argc = PARAM_1;
1305     napi_value args[1] = {nullptr};
1306     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1307     double firstParam;
1308     napi_get_value_double(env, args[0], &firstParam);
1309     double getResult = cosl(firstParam * PI / HALFCIRCLE);
1310     napi_value result = nullptr;
1311     napi_create_double(env, getResult, &result);
1312     return result;
1313 }
1314 
CosHf(napi_env env, napi_callback_info info)1315 static napi_value CosHf(napi_env env, napi_callback_info info)
1316 {
1317     size_t argc = PARAM_1;
1318     napi_value args[1] = {nullptr};
1319     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1320     double firstParam;
1321     napi_get_value_double(env, args[0], &firstParam);
1322     double getResult = coshf(firstParam * PI / HALFCIRCLE);
1323     napi_value result = nullptr;
1324     napi_create_double(env, getResult, &result);
1325     return result;
1326 }
1327 
CosHl(napi_env env, napi_callback_info info)1328 static napi_value CosHl(napi_env env, napi_callback_info info)
1329 {
1330     size_t argc = PARAM_1;
1331     napi_value args[1] = {nullptr};
1332     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1333     double firstParam;
1334     napi_get_value_double(env, args[0], &firstParam);
1335     double getResult = coshl(firstParam * PI / HALFCIRCLE);
1336     napi_value result = nullptr;
1337     napi_create_double(env, getResult, &result);
1338     return result;
1339 }
1340 
doubleInput(napi_env env, napi_callback_info info)1341 static double doubleInput(napi_env env, napi_callback_info info)
1342 {
1343     size_t argc = PARAM_1;
1344     napi_value args[1] = {nullptr};
1345     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1346     double expect;
1347     napi_get_value_double(env, args[0], &expect);
1348     return expect;
1349 }
1350 
doubleOutput(napi_env env, double output)1351 static napi_value doubleOutput(napi_env env, double output)
1352 {
1353     napi_value result;
1354     napi_create_double(env, output, &result);
1355     return result;
1356 }
1357 
Log(napi_env env, napi_callback_info info)1358 static napi_value Log(napi_env env, napi_callback_info info)
1359 {
1360     double input = doubleInput(env, info);
1361     return doubleOutput(env, log(input));
1362 }
1363 
Log10(napi_env env, napi_callback_info info)1364 static napi_value Log10(napi_env env, napi_callback_info info)
1365 {
1366     double input = doubleInput(env, info);
1367     return doubleOutput(env, log10(input));
1368 }
1369 
Log10f(napi_env env, napi_callback_info info)1370 static napi_value Log10f(napi_env env, napi_callback_info info)
1371 {
1372     double input = doubleInput(env, info);
1373     return doubleOutput(env, log10f(input));
1374 }
1375 
Log10l(napi_env env, napi_callback_info info)1376 static napi_value Log10l(napi_env env, napi_callback_info info)
1377 {
1378     double input = doubleInput(env, info);
1379     return doubleOutput(env, log10l(input));
1380 }
1381 
Log1p(napi_env env, napi_callback_info info)1382 static napi_value Log1p(napi_env env, napi_callback_info info)
1383 {
1384     double input = doubleInput(env, info);
1385     return doubleOutput(env, log1p(input));
1386 }
1387 
Log1pf(napi_env env, napi_callback_info info)1388 static napi_value Log1pf(napi_env env, napi_callback_info info)
1389 {
1390     double input = doubleInput(env, info);
1391     return doubleOutput(env, log1pf(input));
1392 }
1393 
Log1pl(napi_env env, napi_callback_info info)1394 static napi_value Log1pl(napi_env env, napi_callback_info info)
1395 {
1396     double input = doubleInput(env, info);
1397     double result = log1pl(input);
1398     return doubleOutput(env, result);
1399 }
1400 
Log2(napi_env env, napi_callback_info info)1401 static napi_value Log2(napi_env env, napi_callback_info info)
1402 {
1403     double input = doubleInput(env, info);
1404     double result = log2(input);
1405     return doubleOutput(env, result);
1406 }
1407 
Log2f(napi_env env, napi_callback_info info)1408 static napi_value Log2f(napi_env env, napi_callback_info info)
1409 {
1410     double input = doubleInput(env, info);
1411     double result = log2(input);
1412     return doubleOutput(env, result);
1413 }
1414 
Log2l(napi_env env, napi_callback_info info)1415 static napi_value Log2l(napi_env env, napi_callback_info info)
1416 {
1417     double input = doubleInput(env, info);
1418     double result = log2(input);
1419     return doubleOutput(env, result);
1420 }
1421 
LogB(napi_env env, napi_callback_info info)1422 static napi_value LogB(napi_env env, napi_callback_info info)
1423 {
1424     double input = doubleInput(env, info);
1425     double result = logb(input);
1426     return doubleOutput(env, result);
1427 }
1428 
LogBf(napi_env env, napi_callback_info info)1429 static napi_value LogBf(napi_env env, napi_callback_info info)
1430 {
1431     double input = doubleInput(env, info);
1432     double result = logbf(input);
1433     return doubleOutput(env, result);
1434 }
1435 
LogBl(napi_env env, napi_callback_info info)1436 static napi_value LogBl(napi_env env, napi_callback_info info)
1437 {
1438     double input = doubleInput(env, info);
1439     double result = logbf(input);
1440     return doubleOutput(env, result);
1441 }
1442 
LogF(napi_env env, napi_callback_info info)1443 static napi_value LogF(napi_env env, napi_callback_info info)
1444 {
1445     double input = doubleInput(env, info);
1446     double result = logf(input);
1447     return doubleOutput(env, result);
1448 }
1449 
LogL(napi_env env, napi_callback_info info)1450 static napi_value LogL(napi_env env, napi_callback_info info)
1451 {
1452     double input = doubleInput(env, info);
1453     double result = logl(input);
1454     return doubleOutput(env, result);
1455 }
1456 
Sin(napi_env env, napi_callback_info info)1457 static napi_value Sin(napi_env env, napi_callback_info info)
1458 {
1459     size_t argc = PARAM_1;
1460     napi_value args[1] = {nullptr};
1461     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1462     double valueZero;
1463     napi_get_value_double(env, args[0], &valueZero);
1464     double sinValue = sin(valueZero);
1465     napi_value result = nullptr;
1466     napi_create_double(env, sinValue, &result);
1467     return result;
1468 }
1469 
Sinf(napi_env env, napi_callback_info info)1470 static napi_value Sinf(napi_env env, napi_callback_info info)
1471 {
1472     size_t argc = PARAM_1;
1473     napi_value args[1] = {nullptr};
1474     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1475     double valueZero;
1476     napi_get_value_double(env, args[0], &valueZero);
1477     double sinValue = sinf(valueZero);
1478     napi_value result = nullptr;
1479     napi_create_double(env, sinValue, &result);
1480     return result;
1481 }
1482 
Sinh(napi_env env, napi_callback_info info)1483 static napi_value Sinh(napi_env env, napi_callback_info info)
1484 {
1485     size_t argc = PARAM_1;
1486     napi_value args[1] = {nullptr};
1487     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1488     double valueZero;
1489     napi_get_value_double(env, args[0], &valueZero);
1490     double sinValue = sinh(valueZero);
1491     napi_value result = nullptr;
1492     napi_create_double(env, sinValue, &result);
1493     return result;
1494 }
1495 
Sinhf(napi_env env, napi_callback_info info)1496 static napi_value Sinhf(napi_env env, napi_callback_info info)
1497 {
1498     size_t argc = PARAM_1;
1499     napi_value args[1] = {nullptr};
1500     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1501     double valueZero;
1502     napi_get_value_double(env, args[0], &valueZero);
1503     double sinValue = sinhf(valueZero);
1504     napi_value result = nullptr;
1505     napi_create_double(env, sinValue, &result);
1506     return result;
1507 }
1508 
Sinhl(napi_env env, napi_callback_info info)1509 static napi_value Sinhl(napi_env env, napi_callback_info info)
1510 {
1511     size_t argc = PARAM_1;
1512     napi_value args[1] = {nullptr};
1513     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1514     double valueZero;
1515     napi_get_value_double(env, args[0], &valueZero);
1516     double sinValue = sinhl(valueZero);
1517     napi_value result = nullptr;
1518     napi_create_double(env, sinValue, &result);
1519     return result;
1520 }
1521 
Sinl(napi_env env, napi_callback_info info)1522 static napi_value Sinl(napi_env env, napi_callback_info info)
1523 {
1524     size_t argc = PARAM_1;
1525     napi_value args[1] = {nullptr};
1526     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1527     double valueZero;
1528     napi_get_value_double(env, args[0], &valueZero);
1529     double sinValue = sinl(valueZero);
1530     napi_value result = nullptr;
1531     napi_create_double(env, sinValue, &result);
1532     return result;
1533 }
1534 
Sqrt(napi_env env, napi_callback_info info)1535 static napi_value Sqrt(napi_env env, napi_callback_info info)
1536 {
1537     size_t argc = PARAM_1;
1538     napi_value args[1] = {nullptr};
1539     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1540     double valueZero;
1541     napi_get_value_double(env, args[0], &valueZero);
1542     double sinValue = sqrt(valueZero);
1543     napi_value result = nullptr;
1544     napi_create_double(env, sinValue, &result);
1545     return result;
1546 }
1547 
Sqrtf(napi_env env, napi_callback_info info)1548 static napi_value Sqrtf(napi_env env, napi_callback_info info)
1549 {
1550     size_t argc = PARAM_1;
1551     napi_value args[1] = {nullptr};
1552     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1553     double valueZero;
1554     napi_get_value_double(env, args[0], &valueZero);
1555     double sinValue = sqrtf(valueZero);
1556     napi_value result = nullptr;
1557     napi_create_double(env, sinValue, &result);
1558     return result;
1559 }
1560 
Sqrtl(napi_env env, napi_callback_info info)1561 static napi_value Sqrtl(napi_env env, napi_callback_info info)
1562 {
1563     size_t argc = PARAM_1;
1564     napi_value args[1] = {nullptr};
1565     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1566     double valueZero;
1567     napi_get_value_double(env, args[0], &valueZero);
1568     double sinValue = sqrtl(valueZero);
1569     napi_value result = nullptr;
1570     napi_create_double(env, sinValue, &result);
1571     return result;
1572 }
1573 
Remainder(napi_env env, napi_callback_info info)1574 static napi_value Remainder(napi_env env, napi_callback_info info)
1575 {
1576     size_t argc = PARAM_2;
1577     napi_value args[2] = {nullptr};
1578     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1579     double valueZero;
1580     napi_get_value_double(env, args[0], &valueZero);
1581     double firstParam;
1582     napi_get_value_double(env, args[1], &firstParam);
1583 
1584     double remainderValue = remainder(valueZero, firstParam);
1585     napi_value result = nullptr;
1586     napi_create_double(env, remainderValue, &result);
1587 
1588     return result;
1589 }
1590 
Remainderf(napi_env env, napi_callback_info info)1591 static napi_value Remainderf(napi_env env, napi_callback_info info)
1592 {
1593     size_t argc = PARAM_2;
1594     napi_value args[2] = {nullptr};
1595     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1596     double valueZero;
1597     napi_get_value_double(env, args[0], &valueZero);
1598     double firstParam;
1599     napi_get_value_double(env, args[1], &firstParam);
1600 
1601     double remainderValue = remainderf(valueZero, firstParam);
1602     napi_value result = nullptr;
1603     napi_create_double(env, remainderValue, &result);
1604 
1605     return result;
1606 }
1607 
Remainderl(napi_env env, napi_callback_info info)1608 static napi_value Remainderl(napi_env env, napi_callback_info info)
1609 {
1610     size_t argc = PARAM_2;
1611     napi_value args[2] = {nullptr};
1612     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1613     double valueZero;
1614     napi_get_value_double(env, args[0], &valueZero);
1615     double firstParam;
1616     napi_get_value_double(env, args[1], &firstParam);
1617 
1618     double remainderValue = remainderl(valueZero, firstParam);
1619     napi_value result = nullptr;
1620     napi_create_double(env, remainderValue, &result);
1621     return result;
1622 }
1623 
Remquo(napi_env env, napi_callback_info info)1624 static napi_value Remquo(napi_env env, napi_callback_info info)
1625 {
1626     size_t argc = PARAM_3;
1627     napi_value args[3] = {nullptr};
1628     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1629     double valueZero;
1630     napi_get_value_double(env, args[0], &valueZero);
1631     double firstParam;
1632     napi_get_value_double(env, args[1], &firstParam);
1633     int secondParam;
1634     napi_get_value_int32(env, args[2], &secondParam);
1635 
1636     double remQuoValue = remquo(valueZero, firstParam, &secondParam);
1637     napi_value result = nullptr;
1638     napi_create_double(env, remQuoValue, &result);
1639 
1640     return result;
1641 }
1642 
Remquof(napi_env env, napi_callback_info info)1643 static napi_value Remquof(napi_env env, napi_callback_info info)
1644 {
1645     size_t argc = PARAM_3;
1646     napi_value args[3] = {nullptr};
1647     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1648     double valueZero;
1649     napi_get_value_double(env, args[0], &valueZero);
1650     double firstParam;
1651     napi_get_value_double(env, args[1], &firstParam);
1652     int secondParam;
1653     napi_get_value_int32(env, args[2], &secondParam);
1654 
1655     double remQuoValue = remquof(valueZero, firstParam, &secondParam);
1656     napi_value result = nullptr;
1657     napi_create_double(env, remQuoValue, &result);
1658 
1659     return result;
1660 }
1661 
Remquol(napi_env env, napi_callback_info info)1662 static napi_value Remquol(napi_env env, napi_callback_info info)
1663 {
1664     size_t argc = PARAM_3;
1665     napi_value args[3] = {nullptr};
1666     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1667     double valueZero;
1668     napi_get_value_double(env, args[0], &valueZero);
1669     double firstParam;
1670     napi_get_value_double(env, args[1], &firstParam);
1671     int secondParam;
1672     napi_get_value_int32(env, args[2], &secondParam);
1673 
1674     double remQuoValue = remquol(valueZero, firstParam, &secondParam);
1675     napi_value result = nullptr;
1676     napi_create_double(env, remQuoValue, &result);
1677 
1678     return result;
1679 }
1680 
Rint(napi_env env, napi_callback_info info)1681 static napi_value Rint(napi_env env, napi_callback_info info)
1682 {
1683     size_t argc = PARAM_1;
1684     napi_value args[1] = {nullptr};
1685     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1686     double valueZero;
1687     napi_get_value_double(env, args[0], &valueZero);
1688     int rinTValue = rint(valueZero);
1689     napi_value result = nullptr;
1690     napi_create_int32(env, rinTValue, &result);
1691 
1692     return result;
1693 }
1694 
Rintf(napi_env env, napi_callback_info info)1695 static napi_value Rintf(napi_env env, napi_callback_info info)
1696 {
1697     size_t argc = PARAM_1;
1698     napi_value args[1] = {nullptr};
1699     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1700     double valueZero;
1701     napi_get_value_double(env, args[0], &valueZero);
1702     double rinTfValue = rintf(valueZero);
1703     napi_value result = nullptr;
1704     napi_create_double(env, rinTfValue, &result);
1705 
1706     return result;
1707 }
1708 
Rintl(napi_env env, napi_callback_info info)1709 static napi_value Rintl(napi_env env, napi_callback_info info)
1710 {
1711     size_t argc = PARAM_1;
1712     napi_value args[1] = {nullptr};
1713     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1714     double valueZero;
1715     napi_get_value_double(env, args[0], &valueZero);
1716     double rinTLValue = rintl(valueZero);
1717     napi_value result = nullptr;
1718     napi_create_double(env, rinTLValue, &result);
1719 
1720     return result;
1721 }
1722 
Round(napi_env env, napi_callback_info info)1723 static napi_value Round(napi_env env, napi_callback_info info)
1724 {
1725     size_t argc = PARAM_1;
1726     napi_value args[1] = {nullptr};
1727     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1728     double valueZero;
1729     napi_get_value_double(env, args[0], &valueZero);
1730     double roundValue = round(valueZero);
1731     napi_value result = nullptr;
1732     napi_create_double(env, roundValue, &result);
1733 
1734     return result;
1735 }
1736 
Roundf(napi_env env, napi_callback_info info)1737 static napi_value Roundf(napi_env env, napi_callback_info info)
1738 {
1739     size_t argc = PARAM_1;
1740     napi_value args[1] = {nullptr};
1741     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1742     double valueZero;
1743     napi_get_value_double(env, args[0], &valueZero);
1744     double roundFValue = roundf(valueZero);
1745     napi_value result = nullptr;
1746     napi_create_double(env, roundFValue, &result);
1747 
1748     return result;
1749 }
1750 
Roundl(napi_env env, napi_callback_info info)1751 static napi_value Roundl(napi_env env, napi_callback_info info)
1752 {
1753     size_t argc = PARAM_1;
1754     napi_value args[1] = {nullptr};
1755     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1756     double valueZero;
1757     napi_get_value_double(env, args[0], &valueZero);
1758     double roundLValue = roundl(valueZero);
1759     napi_value result = nullptr;
1760     napi_create_int32(env, roundLValue, &result);
1761 
1762     return result;
1763 }
1764 
Scalbln(napi_env env, napi_callback_info info)1765 static napi_value Scalbln(napi_env env, napi_callback_info info)
1766 {
1767     size_t argc = PARAM_2;
1768     napi_value args[2] = {nullptr};
1769     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1770     double valueZero;
1771     napi_get_value_double(env, args[0], &valueZero);
1772     double firstParam;
1773     napi_get_value_double(env, args[1], &firstParam);
1774     double scaLBlnValue = scalbln(valueZero, firstParam);
1775     napi_value result = nullptr;
1776     napi_create_double(env, scaLBlnValue, &result);
1777 
1778     return result;
1779 }
1780 
Tan(napi_env env, napi_callback_info info)1781 static napi_value Tan(napi_env env, napi_callback_info info)
1782 {
1783     size_t argc = PARAM_1;
1784     napi_value args[1] = {nullptr};
1785     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1786     double value;
1787     napi_get_value_double(env, args[0], &value);
1788     double tan_value = tan(value);
1789     napi_value result = nullptr;
1790     napi_create_double(env, tan_value, &result);
1791     return result;
1792 }
1793 
Tanf(napi_env env, napi_callback_info info)1794 static napi_value Tanf(napi_env env, napi_callback_info info)
1795 {
1796     size_t argc = PARAM_1;
1797     napi_value args[1] = {nullptr};
1798     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1799     double value;
1800     napi_get_value_double(env, args[0], &value);
1801     double tanFValue = tanf(value);
1802     napi_value result = nullptr;
1803     napi_create_double(env, tanFValue, &result);
1804     return result;
1805 }
1806 
Tanh(napi_env env, napi_callback_info info)1807 static napi_value Tanh(napi_env env, napi_callback_info info)
1808 {
1809     size_t argc = PARAM_1;
1810     napi_value args[1] = {nullptr};
1811     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1812     double value;
1813     napi_get_value_double(env, args[0], &value);
1814     double tanHValue = tanh(value);
1815     napi_value result = nullptr;
1816     napi_create_double(env, tanHValue, &result);
1817     return result;
1818 }
1819 
Tanhf(napi_env env, napi_callback_info info)1820 static napi_value Tanhf(napi_env env, napi_callback_info info)
1821 {
1822     size_t argc = PARAM_1;
1823     napi_value args[1] = {nullptr};
1824     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1825     double value;
1826     napi_get_value_double(env, args[0], &value);
1827     double tanHfValue = tanhf(value);
1828     napi_value result = nullptr;
1829     napi_create_double(env, tanHfValue, &result);
1830     return result;
1831 }
1832 
Tanhl(napi_env env, napi_callback_info info)1833 static napi_value Tanhl(napi_env env, napi_callback_info info)
1834 {
1835     size_t argc = PARAM_1;
1836     napi_value args[1] = {nullptr};
1837     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1838     double value;
1839     napi_get_value_double(env, args[0], &value);
1840     double tanHlValue = tanhl(value);
1841     napi_value result = nullptr;
1842     napi_create_double(env, tanHlValue, &result);
1843     return result;
1844 }
1845 
Tanl(napi_env env, napi_callback_info info)1846 static napi_value Tanl(napi_env env, napi_callback_info info)
1847 {
1848     size_t argc = PARAM_1;
1849     napi_value args[1] = {nullptr};
1850     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1851     double value;
1852     napi_get_value_double(env, args[0], &value);
1853     double tanLValue = tanl(value);
1854     napi_value result = nullptr;
1855     napi_create_double(env, tanLValue, &result);
1856     return result;
1857 }
1858 
Tgamma(napi_env env, napi_callback_info info)1859 static napi_value Tgamma(napi_env env, napi_callback_info info)
1860 {
1861     size_t argc = PARAM_1;
1862     napi_value args[1] = {nullptr};
1863     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1864     double valueZero;
1865     napi_get_value_double(env, args[0], &valueZero);
1866     double tgaMmaValue = tgamma(valueZero);
1867     napi_value result = nullptr;
1868     napi_create_double(env, tgaMmaValue, &result);
1869     return result;
1870 }
1871 
Tgammaf(napi_env env, napi_callback_info info)1872 static napi_value Tgammaf(napi_env env, napi_callback_info info)
1873 {
1874     size_t argc = PARAM_1;
1875     napi_value args[1] = {nullptr};
1876     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1877     double valueZero;
1878     napi_get_value_double(env, args[0], &valueZero);
1879     double tgaMmaFValue = tgammaf(valueZero);
1880     napi_value result = nullptr;
1881     napi_create_double(env, tgaMmaFValue, &result);
1882     return result;
1883 }
1884 
Tgammal(napi_env env, napi_callback_info info)1885 static napi_value Tgammal(napi_env env, napi_callback_info info)
1886 {
1887     size_t argc = PARAM_1;
1888     napi_value args[1] = {nullptr};
1889     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1890     double valueZero;
1891     napi_get_value_double(env, args[0], &valueZero);
1892     double tgaMmaLValue = tgammal(valueZero);
1893     napi_value result = nullptr;
1894     napi_create_double(env, tgaMmaLValue, &result);
1895     return result;
1896 }
1897 
Scalblnl(napi_env env, napi_callback_info info)1898 static napi_value Scalblnl(napi_env env, napi_callback_info info)
1899 {
1900     size_t argc = PARAM_2;
1901     napi_value args[2] = {nullptr};
1902     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1903     double first;
1904     napi_get_value_double(env, args[0], &first);
1905     int64_t second;
1906     napi_get_value_int64(env, args[1], &second);
1907     double value = scalblnl(first, second);
1908     napi_value result;
1909     napi_create_double(env, value, &result);
1910     return result;
1911 }
1912 
Scalbn(napi_env env, napi_callback_info info)1913 static napi_value Scalbn(napi_env env, napi_callback_info info)
1914 {
1915     size_t argc = PARAM_2;
1916     napi_value args[2] = {nullptr};
1917     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1918     double first;
1919     napi_get_value_double(env, args[0], &first);
1920     int second;
1921     napi_get_value_int32(env, args[1], &second);
1922     double value = scalbn(first, second);
1923     napi_value result;
1924     napi_create_double(env, value, &result);
1925     return result;
1926 }
1927 
Scalblnf(napi_env env, napi_callback_info info)1928 static napi_value Scalblnf(napi_env env, napi_callback_info info)
1929 {
1930     size_t argc = PARAM_2;
1931     napi_value args[2] = {nullptr};
1932     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1933     double first;
1934     napi_get_value_double(env, args[0], &first);
1935     int64_t second;
1936     napi_get_value_int64(env, args[1], &second);
1937     double value = scalblnf(first, second);
1938     napi_value result;
1939     napi_create_double(env, value, &result);
1940     return result;
1941 }
1942 
Scalbnf(napi_env env, napi_callback_info info)1943 static napi_value Scalbnf(napi_env env, napi_callback_info info)
1944 {
1945     size_t argc = PARAM_2;
1946     napi_value args[2] = {nullptr};
1947     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1948     double first;
1949     napi_get_value_double(env, args[0], &first);
1950     int64_t second;
1951     napi_get_value_int64(env, args[1], &second);
1952     double value = scalbnf(first, second);
1953     napi_value result;
1954     napi_create_double(env, value, &result);
1955     return result;
1956 }
1957 
Scalbnl(napi_env env, napi_callback_info info)1958 static napi_value Scalbnl(napi_env env, napi_callback_info info)
1959 {
1960     size_t argc = PARAM_2;
1961     napi_value args[2] = {nullptr};
1962     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1963     double first;
1964     napi_get_value_double(env, args[0], &first);
1965     int second;
1966     napi_get_value_int32(env, args[1], &second);
1967     double value = scalbnl(first, second);
1968     napi_value result;
1969     napi_create_double(env, value, &result);
1970     return result;
1971 }
1972 
Significand(napi_env env, napi_callback_info info)1973 static napi_value Significand(napi_env env, napi_callback_info info)
1974 {
1975     size_t argc = PARAM_1;
1976     napi_value args[1] = {nullptr};
1977     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1978     double valueFirst;
1979     napi_get_value_double(env, args[0], &valueFirst);
1980     double sigval = significand(valueFirst);
1981     napi_value result;
1982     napi_create_double(env, sigval, &result);
1983     return result;
1984 }
1985 
Significandf(napi_env env, napi_callback_info info)1986 static napi_value Significandf(napi_env env, napi_callback_info info)
1987 {
1988     size_t argc = PARAM_1;
1989     napi_value args[1] = {nullptr};
1990     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
1991     double valueFirst;
1992     napi_get_value_double(env, args[0], &valueFirst);
1993     double sigval = significandf(valueFirst);
1994     napi_value result;
1995     napi_create_double(env, sigval, &result);
1996     return result;
1997 }
ATanH(napi_env env, napi_callback_info info)1998 static napi_value ATanH(napi_env env, napi_callback_info info)
1999 {
2000     size_t argc = PARAM_1;
2001     napi_value args[1] = {nullptr};
2002     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2003     double firstParam;
2004     napi_get_value_double(env, args[0], &firstParam);
2005     napi_value result = nullptr;
2006 
2007     double resultValue = atanh(firstParam);
2008     napi_create_double(env, resultValue, &result);
2009 
2010     return result;
2011 }
2012 
ATanHF(napi_env env, napi_callback_info info)2013 static napi_value ATanHF(napi_env env, napi_callback_info info)
2014 {
2015     size_t argc = PARAM_1;
2016     napi_value args[1] = {nullptr};
2017     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2018     double firstParam;
2019     napi_get_value_double(env, args[0], &firstParam);
2020     napi_value result = nullptr;
2021 
2022     double resultValue = atanhf(firstParam);
2023     napi_create_double(env, resultValue, &result);
2024 
2025     return result;
2026 }
2027 
ATanHL(napi_env env, napi_callback_info info)2028 static napi_value ATanHL(napi_env env, napi_callback_info info)
2029 {
2030     size_t argc = PARAM_1;
2031     napi_value args[1] = {nullptr};
2032     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2033     double firstParam;
2034     napi_get_value_double(env, args[0], &firstParam);
2035     napi_value result = nullptr;
2036 
2037     double resultValue = atanhl(firstParam);
2038     napi_create_double(env, resultValue, &result);
2039     return result;
2040 }
ModF(napi_env env, napi_callback_info info)2041 static napi_value ModF(napi_env env, napi_callback_info info)
2042 {
2043     size_t argc = PARAM_1;
2044     napi_value args[1] = {nullptr};
2045     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2046     double firstParam;
2047     napi_get_value_double(env, args[0], &firstParam);
2048     napi_value result = nullptr;
2049     double value = PARAM_0;
2050     modf(firstParam, &value);
2051     napi_create_double(env, value, &result);
2052     return result;
2053 }
ModFf(napi_env env, napi_callback_info info)2054 static napi_value ModFf(napi_env env, napi_callback_info info)
2055 {
2056     size_t argc = PARAM_1;
2057     napi_value args[1] = {nullptr};
2058     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2059     double firstParam;
2060     napi_get_value_double(env, args[0], &firstParam);
2061     napi_value result = nullptr;
2062     float value = 0.0;
2063     modff(firstParam, &value);
2064     napi_create_double(env, value, &result);
2065     return result;
2066 }
ModFl(napi_env env, napi_callback_info info)2067 static napi_value ModFl(napi_env env, napi_callback_info info)
2068 {
2069     size_t argc = PARAM_1;
2070     napi_value args[1] = {nullptr};
2071     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2072     double firstParam;
2073     napi_get_value_double(env, args[0], &firstParam);
2074     napi_value result = nullptr;
2075     long double value = PARAM_0;
2076     modfl(firstParam, &value);
2077     napi_create_double(env, value, &result);
2078 
2079     return result;
2080 }
MRand48(napi_env env, napi_callback_info info)2081 static napi_value MRand48(napi_env env, napi_callback_info info)
2082 {
2083     size_t argc = PARAM_1;
2084     napi_value args[1] = {nullptr};
2085     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2086     double firstParam;
2087     napi_get_value_double(env, args[0], &firstParam);
2088     napi_value result = nullptr;
2089     int value = PARAM_0;
2090     long ret = mrand48();
2091     if (ret < pow(TWO, THIRTYONE) && ret > -pow(TWO, THIRTYONE)) {
2092         value = PARAM_0;
2093     } else {
2094         value = ERROR;
2095     }
2096     napi_create_double(env, value, &result);
2097     return result;
2098 }
2099 
Pow(napi_env env, napi_callback_info info)2100 static napi_value Pow(napi_env env, napi_callback_info info)
2101 {
2102     size_t argc = PARAM_2;
2103     napi_value args[2] = {nullptr};
2104     double valueFirst;
2105     double valueSecond;
2106     napi_value result = nullptr;
2107 
2108     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2109     napi_get_value_double(env, args[0], &valueFirst);
2110     napi_get_value_double(env, args[1], &valueSecond);
2111     napi_create_double(env, pow(valueFirst, valueSecond), &result);
2112 
2113     return result;
2114 }
2115 
Powf(napi_env env, napi_callback_info info)2116 static napi_value Powf(napi_env env, napi_callback_info info)
2117 {
2118     size_t argc = PARAM_2;
2119     napi_value args[2] = {nullptr};
2120     double valueFirst;
2121     double valueSecond;
2122     napi_value result = nullptr;
2123 
2124     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2125     napi_get_value_double(env, args[0], &valueFirst);
2126     napi_get_value_double(env, args[1], &valueSecond);
2127     napi_create_double(env, powf(valueFirst, valueSecond), &result);
2128 
2129     return result;
2130 }
2131 
Sincos(napi_env env, napi_callback_info info)2132 static napi_value Sincos(napi_env env, napi_callback_info info)
2133 {
2134     size_t argc = PARAM_2;
2135     napi_value args[2] = {nullptr};
2136     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2137     double dLon;
2138     napi_get_value_double(env, args[0], &dLon);
2139 
2140     double sindLon;
2141     double cosdLon;
2142     int intValue;
2143     napi_get_value_int32(env, args[1], &intValue);
2144     sincos(dLon, &sindLon, &cosdLon);
2145     double napi_double_value;
2146     if (intValue == 1) {
2147         napi_double_value = sindLon;
2148     } else {
2149         napi_double_value = cosdLon;
2150     }
2151     napi_value result = nullptr;
2152     napi_create_double(env, napi_double_value, &result);
2153     return result;
2154 }
2155 
Sincosl(napi_env env, napi_callback_info info)2156 static napi_value Sincosl(napi_env env, napi_callback_info info)
2157 {
2158     size_t argc = PARAM_2;
2159     napi_value args[2] = {nullptr};
2160     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2161     double dou;
2162     napi_get_value_double(env, args[0], &dou);
2163     int intValue;
2164     napi_get_value_int32(env, args[1], &intValue);
2165     long double dLon = dou;
2166     long double sindou;
2167     long double cosdou;
2168     sincosl(dLon, &sindou, &cosdou);
2169     double napi_double_value;
2170     if (intValue == 1) {
2171         napi_double_value = sindou;
2172     } else {
2173         napi_double_value = cosdou;
2174     }
2175     napi_value result = nullptr;
2176     napi_create_double(env, napi_double_value, &result);
2177     return result;
2178 }
Sincosf(napi_env env, napi_callback_info info)2179 static napi_value Sincosf(napi_env env, napi_callback_info info)
2180 {
2181     size_t argc = PARAM_2;
2182     napi_value args[2] = {nullptr};
2183     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2184     double dou;
2185     napi_get_value_double(env, args[0], &dou);
2186     int intValue;
2187     napi_get_value_int32(env, args[1], &intValue);
2188     float dLon = dou;
2189     float sindou;
2190     float cosdou;
2191     sincosf(dLon, &sindou, &cosdou);
2192     float napi_double_value;
2193     if (intValue == 1) {
2194         napi_double_value = sindou;
2195     } else {
2196         napi_double_value = cosdou;
2197     }
2198     napi_value result = nullptr;
2199     napi_create_double(env, napi_double_value, &result);
2200     return result;
2201 }
2202 
Scalb(napi_env env, napi_callback_info info)2203 static napi_value Scalb(napi_env env, napi_callback_info info)
2204 {
2205     size_t argc = PARAM_2;
2206     napi_value args[2] = {nullptr};
2207     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2208     double param;
2209     napi_get_value_double(env, args[0], &param);
2210     double paramExp;
2211     napi_get_value_double(env, args[1], &paramExp);
2212     double resultValue = scalb(param, paramExp);
2213     napi_value result = nullptr;
2214     napi_create_double(env, resultValue, &result);
2215 
2216     return result;
2217 }
2218 
Scalbf(napi_env env, napi_callback_info info)2219 static napi_value Scalbf(napi_env env, napi_callback_info info)
2220 {
2221     size_t argc = PARAM_2;
2222     napi_value args[2] = {nullptr};
2223     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2224     double param;
2225     napi_get_value_double(env, args[0], &param);
2226     double paramExp;
2227     napi_get_value_double(env, args[1], &paramExp);
2228     double resultValue = scalbf(param, paramExp);
2229     napi_value result = nullptr;
2230     napi_create_double(env, resultValue, &result);
2231 
2232     return result;
2233 }
2234 
Trunc(napi_env env, napi_callback_info info)2235 static napi_value Trunc(napi_env env, napi_callback_info info)
2236 {
2237     size_t argc = PARAM_1;
2238     napi_value args[1] = {nullptr};
2239     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2240     double param;
2241     napi_get_value_double(env, args[0], &param);
2242     double resultValue = trunc(param);
2243 
2244     napi_value result = nullptr;
2245     napi_create_double(env, resultValue, &result);
2246 
2247     return result;
2248 }
2249 
Truncf(napi_env env, napi_callback_info info)2250 static napi_value Truncf(napi_env env, napi_callback_info info)
2251 {
2252     size_t argc = PARAM_1;
2253     napi_value args[1] = {nullptr};
2254     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2255     double param;
2256     napi_get_value_double(env, args[0], &param);
2257     double resultValue = truncf(param);
2258     napi_value result = nullptr;
2259     napi_create_double(env, resultValue, &result);
2260 
2261     return result;
2262 }
2263 
Truncl(napi_env env, napi_callback_info info)2264 static napi_value Truncl(napi_env env, napi_callback_info info)
2265 {
2266     size_t argc = PARAM_1;
2267     napi_value args[1] = {nullptr};
2268     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2269     double param;
2270     napi_get_value_double(env, args[0], &param);
2271     double resultValue = truncl(param);
2272     napi_value result = nullptr;
2273     napi_create_double(env, resultValue, &result);
2274 
2275     return result;
2276 }
2277 
Y0(napi_env env, napi_callback_info info)2278 static napi_value Y0(napi_env env, napi_callback_info info)
2279 {
2280     size_t argc = PARAM_1;
2281     napi_value args[1] = {nullptr};
2282     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2283     double param;
2284     napi_get_value_double(env, args[0], &param);
2285     double resultValue = y0(param);
2286     napi_value result = nullptr;
2287     napi_create_double(env, resultValue, &result);
2288 
2289     return result;
2290 }
2291 
Y0f(napi_env env, napi_callback_info info)2292 static napi_value Y0f(napi_env env, napi_callback_info info)
2293 {
2294     size_t argc = PARAM_1;
2295     napi_value args[1] = {nullptr};
2296     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2297     double param;
2298     napi_get_value_double(env, args[0], &param);
2299     double resultValue = y0f(param);
2300     napi_value result = nullptr;
2301     napi_create_double(env, resultValue, &result);
2302 
2303     return result;
2304 }
2305 
Y1(napi_env env, napi_callback_info info)2306 static napi_value Y1(napi_env env, napi_callback_info info)
2307 {
2308     size_t argc = PARAM_1;
2309     napi_value args[1] = {nullptr};
2310     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2311     double param;
2312     napi_get_value_double(env, args[0], &param);
2313     double resultValue = y1(param);
2314     napi_value result = nullptr;
2315     napi_create_double(env, resultValue, &result);
2316 
2317     return result;
2318 }
2319 
Y1f(napi_env env, napi_callback_info info)2320 static napi_value Y1f(napi_env env, napi_callback_info info)
2321 {
2322     size_t argc = PARAM_1;
2323     napi_value args[1] = {nullptr};
2324     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2325     double param;
2326     napi_get_value_double(env, args[0], &param);
2327     double resultValue = y1f(param);
2328     napi_value result = nullptr;
2329     napi_create_double(env, resultValue, &result);
2330 
2331     return result;
2332 }
2333 
Fpclassify(napi_env env, napi_callback_info info)2334 static napi_value Fpclassify(napi_env env, napi_callback_info info)
2335 {
2336     size_t argc = PARAM_1;
2337     napi_value args[1] = {nullptr};
2338     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2339     double param;
2340     napi_get_value_double(env, args[0], &param);
2341 
2342     double value = __fpclassify(param);
2343     napi_value result;
2344     napi_create_double(env, value, &result);
2345     return result;
2346 }
2347 
Fpclassifyf(napi_env env, napi_callback_info info)2348 static napi_value Fpclassifyf(napi_env env, napi_callback_info info)
2349 {
2350     size_t argc = PARAM_1;
2351     napi_value args[1] = {nullptr};
2352     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2353     double param;
2354     napi_get_value_double(env, args[0], &param);
2355 
2356     double value = __fpclassifyf(param);
2357     napi_value result;
2358     napi_create_double(env, value, &result);
2359     return result;
2360 }
2361 
Fpclassifyl(napi_env env, napi_callback_info info)2362 static napi_value Fpclassifyl(napi_env env, napi_callback_info info)
2363 {
2364     size_t argc = PARAM_1;
2365     napi_value args[1] = {nullptr};
2366     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2367     double param;
2368     napi_get_value_double(env, args[0], &param);
2369 
2370     double value = __fpclassifyl(param);
2371     napi_value result;
2372     napi_create_double(env, value, &result);
2373     return result;
2374 }
2375 
Signbit(napi_env env, napi_callback_info info)2376 static napi_value Signbit(napi_env env, napi_callback_info info)
2377 {
2378     size_t argc = PARAM_1;
2379     napi_value args[1] = {nullptr};
2380     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2381     double param;
2382     napi_get_value_double(env, args[0], &param);
2383 
2384     double value = __signbit(param);
2385     napi_value result;
2386     napi_create_double(env, value, &result);
2387     return result;
2388 }
2389 
Signbitf(napi_env env, napi_callback_info info)2390 static napi_value Signbitf(napi_env env, napi_callback_info info)
2391 {
2392     size_t argc = PARAM_1;
2393     napi_value args[1] = {nullptr};
2394     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2395     double param;
2396     napi_get_value_double(env, args[0], &param);
2397 
2398     double value = __signbitf(param);
2399     napi_value result;
2400     napi_create_double(env, value, &result);
2401     return result;
2402 }
2403 
Signbitl(napi_env env, napi_callback_info info)2404 static napi_value Signbitl(napi_env env, napi_callback_info info)
2405 {
2406     size_t argc = PARAM_1;
2407     napi_value args[1] = {nullptr};
2408     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2409     double param;
2410     napi_get_value_double(env, args[0], &param);
2411 
2412     double value = __signbitl(param);
2413     napi_value result;
2414     napi_create_double(env, value, &result);
2415     return result;
2416 }
2417 
CBrt(napi_env env, napi_callback_info info)2418 static napi_value CBrt(napi_env env, napi_callback_info info)
2419 {
2420     size_t argc = PARAM_1;
2421     napi_value args[1] = {nullptr};
2422     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2423     double value0;
2424     napi_get_value_double(env, args[0], &value0);
2425     napi_value result = nullptr;
2426 
2427     double resultValue = cbrt(value0);
2428     napi_create_double(env, resultValue, &result);
2429 
2430     return result;
2431 }
2432 
CBrtL(napi_env env, napi_callback_info info)2433 static napi_value CBrtL(napi_env env, napi_callback_info info)
2434 {
2435     size_t argc = PARAM_1;
2436     napi_value args[1] = {nullptr};
2437     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2438     double value0;
2439     napi_get_value_double(env, args[0], &value0);
2440     napi_value result = nullptr;
2441 
2442     double resultValue = cbrtl(value0);
2443     napi_create_double(env, resultValue, &result);
2444 
2445     return result;
2446 }
2447 
CBrtF(napi_env env, napi_callback_info info)2448 static napi_value CBrtF(napi_env env, napi_callback_info info)
2449 {
2450     size_t argc = PARAM_1;
2451     napi_value args[1] = {nullptr};
2452     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2453     double value0;
2454     napi_get_value_double(env, args[0], &value0);
2455     napi_value result = nullptr;
2456 
2457     double resultValue = cbrtf(value0);
2458     napi_create_double(env, resultValue, &result);
2459 
2460     return result;
2461 }
2462 
Frexp(napi_env env, napi_callback_info info)2463 static napi_value Frexp(napi_env env, napi_callback_info info)
2464 {
2465     size_t argc = PARAM_1;
2466     napi_value args[1] = {nullptr};
2467     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2468     double value0;
2469     napi_get_value_double(env, args[0], &value0);
2470     int exp;
2471     napi_value result = nullptr;
2472 
2473     double resultValue = frexp(value0, &exp);
2474     napi_create_double(env, resultValue, &result);
2475 
2476     return result;
2477 }
2478 
Frexpf(napi_env env, napi_callback_info info)2479 static napi_value Frexpf(napi_env env, napi_callback_info info)
2480 {
2481     size_t argc = PARAM_1;
2482     napi_value args[1] = {nullptr};
2483     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2484     double value0;
2485     napi_get_value_double(env, args[0], &value0);
2486     int exp;
2487     napi_value result = nullptr;
2488 
2489     double resultValue = frexpf(value0, &exp);
2490     napi_create_double(env, resultValue, &result);
2491 
2492     return result;
2493 }
2494 
Frexpl(napi_env env, napi_callback_info info)2495 static napi_value Frexpl(napi_env env, napi_callback_info info)
2496 {
2497     size_t argc = PARAM_1;
2498     napi_value args[1] = {nullptr};
2499     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2500     double value0;
2501     napi_get_value_double(env, args[0], &value0);
2502     int exp;
2503     napi_value result = nullptr;
2504 
2505     double resultValue = frexpl(value0, &exp);
2506     napi_create_double(env, resultValue, &result);
2507 
2508     return result;
2509 }
2510 
Powl(napi_env env, napi_callback_info info)2511 static napi_value Powl(napi_env env, napi_callback_info info)
2512 {
2513     size_t argc = PARAM_2;
2514     napi_value args[2] = {nullptr};
2515     double valueFirst;
2516     double valueSecond;
2517     napi_value result = nullptr;
2518 
2519     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2520     napi_get_value_double(env, args[0], &valueFirst);
2521     napi_get_value_double(env, args[1], &valueSecond);
2522     napi_create_double(env, powl(valueFirst, valueSecond), &result);
2523 
2524     return result;
2525 }
2526 
NextToward(napi_env env, napi_callback_info info)2527 static napi_value NextToward(napi_env env, napi_callback_info info)
2528 {
2529     size_t argc = PARAM_2;
2530     napi_value args[2] = {nullptr};
2531     double valueFirst;
2532     double valueSecond;
2533     napi_value result = nullptr;
2534 
2535     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2536     napi_get_value_double(env, args[0], &valueFirst);
2537     napi_get_value_double(env, args[1], &valueSecond);
2538     napi_create_double(env, nexttoward(valueFirst, valueSecond), &result);
2539 
2540     return result;
2541 }
2542 
NextTowardF(napi_env env, napi_callback_info info)2543 static napi_value NextTowardF(napi_env env, napi_callback_info info)
2544 {
2545     size_t argc = PARAM_2;
2546     napi_value args[2] = {nullptr};
2547     double valueFirst;
2548     double valueSecond;
2549     napi_value result = nullptr;
2550 
2551     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2552     napi_get_value_double(env, args[0], &valueFirst);
2553     napi_get_value_double(env, args[1], &valueSecond);
2554     napi_create_double(env, nexttowardf(valueFirst, valueSecond), &result);
2555 
2556     return result;
2557 }
2558 
NextTowardL(napi_env env, napi_callback_info info)2559 static napi_value NextTowardL(napi_env env, napi_callback_info info)
2560 {
2561     size_t argc = PARAM_2;
2562     napi_value args[2] = {nullptr};
2563     double valueFirst;
2564     double valueSecond;
2565     napi_value result = nullptr;
2566 
2567     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2568     napi_get_value_double(env, args[0], &valueFirst);
2569     napi_get_value_double(env, args[1], &valueSecond);
2570     napi_create_double(env, nexttowardl(valueFirst, valueSecond), &result);
2571 
2572     return result;
2573 }
2574 
Nextafter(napi_env env, napi_callback_info info)2575 static napi_value Nextafter(napi_env env, napi_callback_info info)
2576 {
2577     size_t argc = PARAM_2;
2578     napi_value args[2] = {nullptr};
2579     double valueFirst;
2580     double valueSecond;
2581     napi_value result = nullptr;
2582 
2583     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2584     napi_get_value_double(env, args[0], &valueFirst);
2585     napi_get_value_double(env, args[1], &valueSecond);
2586     napi_create_double(env, nextafter(valueFirst, valueSecond), &result);
2587 
2588     return result;
2589 }
2590 
Nextafterf(napi_env env, napi_callback_info info)2591 static napi_value Nextafterf(napi_env env, napi_callback_info info)
2592 {
2593     size_t argc = PARAM_2;
2594     napi_value args[2] = {nullptr};
2595     double valueFirst;
2596     double valueSecond;
2597     napi_value result = nullptr;
2598 
2599     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2600     napi_get_value_double(env, args[0], &valueFirst);
2601     napi_get_value_double(env, args[1], &valueSecond);
2602     napi_create_double(env, nextafterf(valueFirst, valueSecond), &result);
2603 
2604     return result;
2605 }
2606 
Nextafterl(napi_env env, napi_callback_info info)2607 static napi_value Nextafterl(napi_env env, napi_callback_info info)
2608 {
2609     size_t argc = PARAM_2;
2610     napi_value args[2] = {nullptr};
2611     double valueFirst;
2612     double valueSecond;
2613     napi_value result = nullptr;
2614 
2615     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2616     napi_get_value_double(env, args[0], &valueFirst);
2617     napi_get_value_double(env, args[1], &valueSecond);
2618     napi_create_double(env, nextafterl(valueFirst, valueSecond), &result);
2619 
2620     return result;
2621 }
2622 
Nearbyint(napi_env env, napi_callback_info info)2623 static napi_value Nearbyint(napi_env env, napi_callback_info info)
2624 {
2625     size_t argc = PARAM_1;
2626     napi_value args[1] = {nullptr};
2627     double valueFirst;
2628     napi_value result = nullptr;
2629 
2630     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2631     napi_get_value_double(env, args[0], &valueFirst);
2632     napi_create_double(env, nearbyint(valueFirst), &result);
2633 
2634     return result;
2635 }
Nearbyintf(napi_env env, napi_callback_info info)2636 static napi_value Nearbyintf(napi_env env, napi_callback_info info)
2637 {
2638     size_t argc = PARAM_1;
2639     napi_value args[1] = {nullptr};
2640     double valueFirst;
2641     napi_value result = nullptr;
2642 
2643     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2644     napi_get_value_double(env, args[0], &valueFirst);
2645     napi_create_double(env, nearbyintf(valueFirst), &result);
2646 
2647     return result;
2648 }
Nearbyintl(napi_env env, napi_callback_info info)2649 static napi_value Nearbyintl(napi_env env, napi_callback_info info)
2650 {
2651     size_t argc = PARAM_1;
2652     napi_value args[1] = {nullptr};
2653     double valueFirst;
2654     napi_value result = nullptr;
2655 
2656     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2657     napi_get_value_double(env, args[0], &valueFirst);
2658     napi_create_double(env, nearbyintl(valueFirst), &result);
2659 
2660     return result;
2661 }
Nan(napi_env env, napi_callback_info info)2662 static napi_value Nan(napi_env env, napi_callback_info info)
2663 {
2664     size_t argc = PARAM_1;
2665     napi_value args[1] = {nullptr};
2666     size_t size = STRLENGTH;
2667     char *value = static_cast<char *>(malloc(sizeof(char) * size));
2668     size_t actualVal;
2669     napi_value result = nullptr;
2670 
2671     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2672     napi_get_value_string_utf8(env, args[0], value, size, &actualVal);
2673     napi_create_double(env, nan(value), &result);
2674 
2675     return result;
2676 }
2677 
Nanf(napi_env env, napi_callback_info info)2678 static napi_value Nanf(napi_env env, napi_callback_info info)
2679 {
2680     size_t argc = PARAM_1;
2681     napi_value args[1] = {nullptr};
2682     size_t size = STRLENGTH;
2683     char *value = static_cast<char *>(malloc(sizeof(char) * size));
2684     size_t actualVal;
2685     napi_value result = nullptr;
2686 
2687     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2688     napi_get_value_string_utf8(env, args[0], value, size, &actualVal);
2689     napi_create_double(env, nanf(value), &result);
2690 
2691     return result;
2692 }
2693 
Nanl(napi_env env, napi_callback_info info)2694 static napi_value Nanl(napi_env env, napi_callback_info info)
2695 {
2696     size_t argc = PARAM_1;
2697     napi_value args[1] = {nullptr};
2698     size_t size = STRLENGTH;
2699     char *value = static_cast<char *>(malloc(sizeof(char) * size));
2700     size_t actualVal;
2701     napi_value result = nullptr;
2702 
2703     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2704     napi_get_value_string_utf8(env, args[0], value, size, &actualVal);
2705     napi_create_double(env, nanf(value), &result);
2706 
2707     return result;
2708 }
LRint(napi_env env, napi_callback_info info)2709 static napi_value LRint(napi_env env, napi_callback_info info)
2710 {
2711     size_t argc = PARAM_1;
2712     napi_value args[1] = {nullptr};
2713     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2714     double valueZero;
2715     napi_get_value_double(env, args[0], &valueZero);
2716     int lrintValue = lrint(valueZero);
2717     napi_value result = nullptr;
2718     napi_create_int32(env, lrintValue, &result);
2719 
2720     return result;
2721 }
LRintl(napi_env env, napi_callback_info info)2722 static napi_value LRintl(napi_env env, napi_callback_info info)
2723 {
2724     size_t argc = PARAM_1;
2725     napi_value args[1] = {nullptr};
2726     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2727     double valueZero;
2728     napi_get_value_double(env, args[0], &valueZero);
2729     double lrintl_value = lrintl(valueZero);
2730     napi_value result = nullptr;
2731     napi_create_double(env, lrintl_value, &result);
2732 
2733     return result;
2734 }
2735 
LRound(napi_env env, napi_callback_info info)2736 static napi_value LRound(napi_env env, napi_callback_info info)
2737 {
2738     size_t argc = PARAM_1;
2739     napi_value args[1] = {nullptr};
2740     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2741     double valueZero;
2742     napi_get_value_double(env, args[0], &valueZero);
2743     double lroundValue = lround(valueZero);
2744     napi_value result = nullptr;
2745     napi_create_double(env, lroundValue, &result);
2746 
2747     return result;
2748 }
2749 
LRoundf(napi_env env, napi_callback_info info)2750 static napi_value LRoundf(napi_env env, napi_callback_info info)
2751 {
2752     size_t argc = PARAM_1;
2753     napi_value args[1] = {nullptr};
2754     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2755     double valueZero;
2756     napi_get_value_double(env, args[0], &valueZero);
2757     double lroundf_value = lroundf(valueZero);
2758     napi_value result = nullptr;
2759     napi_create_double(env, lroundf_value, &result);
2760 
2761     return result;
2762 }
2763 
LRoundl(napi_env env, napi_callback_info info)2764 static napi_value LRoundl(napi_env env, napi_callback_info info)
2765 {
2766     size_t argc = PARAM_1;
2767     napi_value args[1] = {nullptr};
2768     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2769     double valueZero;
2770     napi_get_value_double(env, args[0], &valueZero);
2771     double lroundl_value = lroundl(valueZero);
2772     napi_value result = nullptr;
2773     napi_create_int32(env, lroundl_value, &result);
2774 
2775     return result;
2776 }
2777 
HYpot(napi_env env, napi_callback_info info)2778 static napi_value HYpot(napi_env env, napi_callback_info info)
2779 {
2780     size_t argc = PARAM_2;
2781     napi_value args[2] = {nullptr};
2782     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2783     double x;
2784     double y;
2785     napi_get_value_double(env, args[0], &x);
2786     napi_get_value_double(env, args[1], &y);
2787     napi_value result = nullptr;
2788 
2789     double resultValue = hypot(x, y);
2790     napi_create_double(env, resultValue, &result);
2791 
2792     return result;
2793 }
2794 
HYpotf(napi_env env, napi_callback_info info)2795 static napi_value HYpotf(napi_env env, napi_callback_info info)
2796 {
2797     size_t argc = PARAM_2;
2798     napi_value args[2] = {nullptr};
2799     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2800     double x;
2801     double y;
2802     napi_get_value_double(env, args[0], &x);
2803     napi_get_value_double(env, args[1], &y);
2804     napi_value result = nullptr;
2805 
2806     double resultValue = hypotf(x, y);
2807     napi_create_double(env, resultValue, &result);
2808 
2809     return result;
2810 }
2811 
HYpotl(napi_env env, napi_callback_info info)2812 static napi_value HYpotl(napi_env env, napi_callback_info info)
2813 {
2814     size_t argc = PARAM_2;
2815     napi_value args[2] = {nullptr};
2816     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2817     double x;
2818     double y;
2819     napi_get_value_double(env, args[0], &x);
2820     napi_get_value_double(env, args[1], &y);
2821     napi_value result = nullptr;
2822 
2823     double resultValue = hypotl(x, y);
2824     napi_create_double(env, resultValue, &result);
2825     return result;
2826 }
ILogb(napi_env env, napi_callback_info info)2827 static napi_value ILogb(napi_env env, napi_callback_info info)
2828 {
2829     size_t argc = PARAM_1;
2830     napi_value args[1] = {nullptr};
2831     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2832     double valueZero;
2833     napi_get_value_double(env, args[0], &valueZero);
2834     double ilogb_value = ilogb(valueZero);
2835     napi_value result = nullptr;
2836     napi_create_double(env, ilogb_value, &result);
2837     return result;
2838 }
ILogbf(napi_env env, napi_callback_info info)2839 static napi_value ILogbf(napi_env env, napi_callback_info info)
2840 {
2841     size_t argc = PARAM_1;
2842     napi_value args[1] = {nullptr};
2843     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2844     double valueZero;
2845     napi_get_value_double(env, args[0], &valueZero);
2846     double ilogbf_value = ilogbf(valueZero);
2847     napi_value result = nullptr;
2848     napi_create_double(env, ilogbf_value, &result);
2849 
2850     return result;
2851 }
ILogbl(napi_env env, napi_callback_info info)2852 static napi_value ILogbl(napi_env env, napi_callback_info info)
2853 {
2854     size_t argc = PARAM_1;
2855     napi_value args[1] = {nullptr};
2856     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2857     double valueZero;
2858     napi_get_value_double(env, args[0], &valueZero);
2859     double ilogbl_value = ilogbl(valueZero);
2860     napi_value result = nullptr;
2861     napi_create_double(env, ilogbl_value, &result);
2862 
2863     return result;
2864 }
2865 
2866 extern int signgam;
SignGam(napi_env env, napi_callback_info info)2867 static napi_value SignGam(napi_env env, napi_callback_info info)
2868 {
2869     size_t argc = PARAM_1;
2870     napi_value args[1] = {nullptr};
2871     napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
2872     double param;
2873     napi_get_value_double(env, args[0], &param);
2874     lgamma(param);
2875     napi_value result;
2876     int retVal = FAIL;
2877     if (signgam >= PARAM_0) {
2878         retVal = SUCCESS;
2879     } else {
2880         retVal = FAIL;
2881     }
2882     napi_create_double(env, retVal, &result);
2883     return result;
2884 }
Yn(napi_env env, napi_callback_info info)2885 static napi_value Yn(napi_env env, napi_callback_info info)
2886 {
2887     double ret = yn(PARAM_3, PARAM_30);
2888     napi_value result = nullptr;
2889     if (ret == MAGICNUM) {
2890         napi_create_double(env, PARAM_0, &result);
2891     } else {
2892         napi_create_double(env, PARAM_UNNORMAL, &result);
2893     }
2894     return result;
2895 }
Ynf(napi_env env, napi_callback_info info)2896 static napi_value Ynf(napi_env env, napi_callback_info info)
2897 {
2898     double ret = ynf(PARAM_3, PARAM_30);
2899     napi_value result = nullptr;
2900     if (ret == MAGICYNFNUM) {
2901         napi_create_double(env, PARAM_0, &result);
2902     } else {
2903         napi_create_double(env, PARAM_UNNORMAL, &result);
2904     }
2905     return result;
2906 }
2907 EXTERN_C_START
Init(napi_env env, napi_value exports)2908 static napi_value Init(napi_env env, napi_value exports)
2909 {
2910     napi_property_descriptor desc[] = {
2911         {"remainder", nullptr, Remainder, nullptr, nullptr, nullptr, napi_default, nullptr},
2912         {"remainderf", nullptr, Remainderf, nullptr, nullptr, nullptr, napi_default, nullptr},
2913         {"remainderl", nullptr, Remainderl, nullptr, nullptr, nullptr, napi_default, nullptr},
2914         {"remquo", nullptr, Remquo, nullptr, nullptr, nullptr, napi_default, nullptr},
2915         {"remquof", nullptr, Remquof, nullptr, nullptr, nullptr, napi_default, nullptr},
2916         {"remquol", nullptr, Remquol, nullptr, nullptr, nullptr, napi_default, nullptr},
2917         {"rint", nullptr, Rint, nullptr, nullptr, nullptr, napi_default, nullptr},
2918         {"rintf", nullptr, Rintf, nullptr, nullptr, nullptr, napi_default, nullptr},
2919         {"rintl", nullptr, Rintl, nullptr, nullptr, nullptr, napi_default, nullptr},
2920         {"round", nullptr, Round, nullptr, nullptr, nullptr, napi_default, nullptr},
2921         {"roundl", nullptr, Roundl, nullptr, nullptr, nullptr, napi_default, nullptr},
2922         {"roundf", nullptr, Roundf, nullptr, nullptr, nullptr, napi_default, nullptr},
2923         {"scalbln", nullptr, Scalbln, nullptr, nullptr, nullptr, napi_default, nullptr},
2924         {"tan", nullptr, Tan, nullptr, nullptr, nullptr, napi_default, nullptr},
2925         {"tanf", nullptr, Tanf, nullptr, nullptr, nullptr, napi_default, nullptr},
2926         {"tanh", nullptr, Tanh, nullptr, nullptr, nullptr, napi_default, nullptr},
2927         {"tanhf", nullptr, Tanhf, nullptr, nullptr, nullptr, napi_default, nullptr},
2928         {"tanhl", nullptr, Tanhl, nullptr, nullptr, nullptr, napi_default, nullptr},
2929         {"tanl", nullptr, Tanl, nullptr, nullptr, nullptr, napi_default, nullptr},
2930         {"tgamma", nullptr, Tgamma, nullptr, nullptr, nullptr, napi_default, nullptr},
2931         {"tgammaf", nullptr, Tgammaf, nullptr, nullptr, nullptr, napi_default, nullptr},
2932         {"tgammal", nullptr, Tgammal, nullptr, nullptr, nullptr, napi_default, nullptr},
2933         {"scalblnl", nullptr, Scalblnl, nullptr, nullptr, nullptr, napi_default, nullptr},
2934         {"scalbn", nullptr, Scalbn, nullptr, nullptr, nullptr, napi_default, nullptr},
2935         {"scalblnf", nullptr, Scalblnf, nullptr, nullptr, nullptr, napi_default, nullptr},
2936         {"scalbnf", nullptr, Scalbnf, nullptr, nullptr, nullptr, napi_default, nullptr},
2937         {"scalbnl", nullptr, Scalbnl, nullptr, nullptr, nullptr, napi_default, nullptr},
2938         {"log", nullptr, Log, nullptr, nullptr, nullptr, napi_default, nullptr},
2939         {"log10", nullptr, Log10, nullptr, nullptr, nullptr, napi_default, nullptr},
2940         {"log10l", nullptr, Log10l, nullptr, nullptr, nullptr, napi_default, nullptr},
2941         {"log10f", nullptr, Log10f, nullptr, nullptr, nullptr, napi_default, nullptr},
2942         {"log1p", nullptr, Log1p, nullptr, nullptr, nullptr, napi_default, nullptr},
2943         {"log1pf", nullptr, Log1pf, nullptr, nullptr, nullptr, napi_default, nullptr},
2944         {"log1pl", nullptr, Log1pl, nullptr, nullptr, nullptr, napi_default, nullptr},
2945         {"log2", nullptr, Log2, nullptr, nullptr, nullptr, napi_default, nullptr},
2946         {"log2f", nullptr, Log2f, nullptr, nullptr, nullptr, napi_default, nullptr},
2947         {"log2l", nullptr, Log2l, nullptr, nullptr, nullptr, napi_default, nullptr},
2948         {"logB", nullptr, LogB, nullptr, nullptr, nullptr, napi_default, nullptr},
2949         {"logBf", nullptr, LogBf, nullptr, nullptr, nullptr, napi_default, nullptr},
2950         {"logBl", nullptr, LogBl, nullptr, nullptr, nullptr, napi_default, nullptr},
2951         {"logF", nullptr, LogF, nullptr, nullptr, nullptr, napi_default, nullptr},
2952         {"logL", nullptr, LogL, nullptr, nullptr, nullptr, napi_default, nullptr},
2953         {"aSin", nullptr, ASin, nullptr, nullptr, nullptr, napi_default, nullptr},
2954         {"aSinF", nullptr, ASinF, nullptr, nullptr, nullptr, napi_default, nullptr},
2955         {"aSinL", nullptr, ASinL, nullptr, nullptr, nullptr, napi_default, nullptr},
2956         {"aSinH", nullptr, ASinH, nullptr, nullptr, nullptr, napi_default, nullptr},
2957         {"aSinHL", nullptr, ASinHL, nullptr, nullptr, nullptr, napi_default, nullptr},
2958         {"aSinHF", nullptr, ASinHF, nullptr, nullptr, nullptr, napi_default, nullptr},
2959         {"aCos", nullptr, ACos, nullptr, nullptr, nullptr, napi_default, nullptr},
2960         {"aCosF", nullptr, ACosF, nullptr, nullptr, nullptr, napi_default, nullptr},
2961         {"aCosL", nullptr, ACosL, nullptr, nullptr, nullptr, napi_default, nullptr},
2962         {"aCosH", nullptr, ACosH, nullptr, nullptr, nullptr, napi_default, nullptr},
2963         {"aCosHL", nullptr, ACosHL, nullptr, nullptr, nullptr, napi_default, nullptr},
2964         {"aCosHF", nullptr, ACosHF, nullptr, nullptr, nullptr, napi_default, nullptr},
2965         {"aTan", nullptr, ATan, nullptr, nullptr, nullptr, napi_default, nullptr},
2966         {"aTanF", nullptr, ATanF, nullptr, nullptr, nullptr, napi_default, nullptr},
2967         {"aTanL", nullptr, ATanL, nullptr, nullptr, nullptr, napi_default, nullptr},
2968         {"aTan2", nullptr, ATan2, nullptr, nullptr, nullptr, napi_default, nullptr},
2969         {"aTan2F", nullptr, ATan2F, nullptr, nullptr, nullptr, napi_default, nullptr},
2970         {"aTan2L", nullptr, ATan2L, nullptr, nullptr, nullptr, napi_default, nullptr},
2971         {"coshl", nullptr, CosHl, nullptr, nullptr, nullptr, napi_default, nullptr},
2972         {"coshf", nullptr, CosHf, nullptr, nullptr, nullptr, napi_default, nullptr},
2973         {"cosh", nullptr, Cosh, nullptr, nullptr, nullptr, napi_default, nullptr},
2974         {"cosl", nullptr, CosL, nullptr, nullptr, nullptr, napi_default, nullptr},
2975         {"cosf", nullptr, CosF, nullptr, nullptr, nullptr, napi_default, nullptr},
2976         {"erfl", nullptr, ErfL, nullptr, nullptr, nullptr, napi_default, nullptr},
2977         {"erff", nullptr, ErfF, nullptr, nullptr, nullptr, napi_default, nullptr},
2978         {"erfcl", nullptr, ErfCl, nullptr, nullptr, nullptr, napi_default, nullptr},
2979         {"erfcf", nullptr, ErfCf, nullptr, nullptr, nullptr, napi_default, nullptr},
2980         {"erfc", nullptr, ErfC, nullptr, nullptr, nullptr, napi_default, nullptr},
2981         {"exp2l", nullptr, Exp2l, nullptr, nullptr, nullptr, napi_default, nullptr},
2982         {"exp2f", nullptr, Exp2f, nullptr, nullptr, nullptr, napi_default, nullptr},
2983         {"expl", nullptr, ExpL, nullptr, nullptr, nullptr, napi_default, nullptr},
2984         {"expf", nullptr, ExpF, nullptr, nullptr, nullptr, napi_default, nullptr},
2985         {"expm1l", nullptr, ExpM1l, nullptr, nullptr, nullptr, napi_default, nullptr},
2986         {"expm1f", nullptr, ExpM1f, nullptr, nullptr, nullptr, napi_default, nullptr},
2987         {"ceill", nullptr, CeilL, nullptr, nullptr, nullptr, napi_default, nullptr},
2988         {"ceilf", nullptr, CeilF, nullptr, nullptr, nullptr, napi_default, nullptr},
2989         {"ceil", nullptr, Ceil, nullptr, nullptr, nullptr, napi_default, nullptr},
2990         {"fabsl", nullptr, FAbsL, nullptr, nullptr, nullptr, napi_default, nullptr},
2991         {"fabsf", nullptr, FAbsF, nullptr, nullptr, nullptr, napi_default, nullptr},
2992         {"fdiml", nullptr, FDimL, nullptr, nullptr, nullptr, napi_default, nullptr},
2993         {"fdimf", nullptr, FDimF, nullptr, nullptr, nullptr, napi_default, nullptr},
2994         {"floorl", nullptr, FloorL, nullptr, nullptr, nullptr, napi_default, nullptr},
2995         {"floorf", nullptr, FloorF, nullptr, nullptr, nullptr, napi_default, nullptr},
2996         {"fmal", nullptr, FmaL, nullptr, nullptr, nullptr, napi_default, nullptr},
2997         {"fmaf", nullptr, FmaF, nullptr, nullptr, nullptr, napi_default, nullptr},
2998         {"fmaxl", nullptr, FMaxL, nullptr, nullptr, nullptr, napi_default, nullptr},
2999         {"fmaxf", nullptr, FMaxF, nullptr, nullptr, nullptr, napi_default, nullptr},
3000         {"fminl", nullptr, FMinL, nullptr, nullptr, nullptr, napi_default, nullptr},
3001         {"fminf", nullptr, FMinF, nullptr, nullptr, nullptr, napi_default, nullptr},
3002         {"fmodl", nullptr, FmodL, nullptr, nullptr, nullptr, napi_default, nullptr},
3003         {"fmodf", nullptr, FmodF, nullptr, nullptr, nullptr, napi_default, nullptr},
3004         {"expm1", nullptr, ExpM1, nullptr, nullptr, nullptr, napi_default, nullptr},
3005         {"exp2", nullptr, Exp2, nullptr, nullptr, nullptr, napi_default, nullptr},
3006         {"cos", nullptr, Cos, nullptr, nullptr, nullptr, napi_default, nullptr},
3007         {"erf", nullptr, Erf, nullptr, nullptr, nullptr, napi_default, nullptr},
3008         {"copysignl", nullptr, CopySignL, nullptr, nullptr, nullptr, napi_default, nullptr},
3009         {"copysignf", nullptr, CopySignF, nullptr, nullptr, nullptr, napi_default, nullptr},
3010         {"copysign", nullptr, CopySign, nullptr, nullptr, nullptr, napi_default, nullptr},
3011         {"exp", nullptr, Exp, nullptr, nullptr, nullptr, napi_default, nullptr},
3012         {"fabs", nullptr, FAbs, nullptr, nullptr, nullptr, napi_default, nullptr},
3013         {"fdim", nullptr, FDim, nullptr, nullptr, nullptr, napi_default, nullptr},
3014         {"floor", nullptr, Floor, nullptr, nullptr, nullptr, napi_default, nullptr},
3015         {"fma", nullptr, Fma, nullptr, nullptr, nullptr, napi_default, nullptr},
3016         {"fmax", nullptr, FMax, nullptr, nullptr, nullptr, napi_default, nullptr},
3017         {"fmin", nullptr, FMin, nullptr, nullptr, nullptr, napi_default, nullptr},
3018         {"fmod", nullptr, Fmod, nullptr, nullptr, nullptr, napi_default, nullptr},
3019         {"sin", nullptr, Sin, nullptr, nullptr, nullptr, napi_default, nullptr},
3020         {"sinf", nullptr, Sinf, nullptr, nullptr, nullptr, napi_default, nullptr},
3021         {"sinl", nullptr, Sinl, nullptr, nullptr, nullptr, napi_default, nullptr},
3022         {"sinh", nullptr, Sinh, nullptr, nullptr, nullptr, napi_default, nullptr},
3023         {"sinhf", nullptr, Sinhf, nullptr, nullptr, nullptr, napi_default, nullptr},
3024         {"sinhl", nullptr, Sinhl, nullptr, nullptr, nullptr, napi_default, nullptr},
3025         {"sqrt", nullptr, Sqrt, nullptr, nullptr, nullptr, napi_default, nullptr},
3026         {"sqrtf", nullptr, Sqrtf, nullptr, nullptr, nullptr, napi_default, nullptr},
3027         {"sqrtl", nullptr, Sqrtl, nullptr, nullptr, nullptr, napi_default, nullptr},
3028         {"j0", nullptr, J0, nullptr, nullptr, nullptr, napi_default, nullptr},
3029         {"j0f", nullptr, J0f, nullptr, nullptr, nullptr, napi_default, nullptr},
3030         {"j1", nullptr, J1, nullptr, nullptr, nullptr, napi_default, nullptr},
3031         {"j1f", nullptr, J1f, nullptr, nullptr, nullptr, napi_default, nullptr},
3032         {"jn", nullptr, Jn, nullptr, nullptr, nullptr, napi_default, nullptr},
3033         {"jnf", nullptr, Jnf, nullptr, nullptr, nullptr, napi_default, nullptr},
3034         {"ldexp", nullptr, Ldexp, nullptr, nullptr, nullptr, napi_default, nullptr},
3035         {"ldexpf", nullptr, Ldexpf, nullptr, nullptr, nullptr, napi_default, nullptr},
3036         {"ldexpl", nullptr, Ldexpl, nullptr, nullptr, nullptr, napi_default, nullptr},
3037         {"aTanH", nullptr, ATanH, nullptr, nullptr, nullptr, napi_default, nullptr},
3038         {"aTanHF", nullptr, ATanHF, nullptr, nullptr, nullptr, napi_default, nullptr},
3039         {"aTanHL", nullptr, ATanHL, nullptr, nullptr, nullptr, napi_default, nullptr},
3040         {"sincos", nullptr, Sincos, nullptr, nullptr, nullptr, napi_default, nullptr},
3041         {"sincosl", nullptr, Sincosl, nullptr, nullptr, nullptr, napi_default, nullptr},
3042         {"sincosf", nullptr, Sincosf, nullptr, nullptr, nullptr, napi_default, nullptr},
3043         {"significand", nullptr, Significand, nullptr, nullptr, nullptr, napi_default, nullptr},
3044         {"significandf", nullptr, Significandf, nullptr, nullptr, nullptr, napi_default, nullptr},
3045         {"trunc", nullptr, Trunc, nullptr, nullptr, nullptr, napi_default, nullptr},
3046         {"truncf", nullptr, Truncf, nullptr, nullptr, nullptr, napi_default, nullptr},
3047         {"truncl", nullptr, Truncl, nullptr, nullptr, nullptr, napi_default, nullptr},
3048         {"scalb", nullptr, Scalb, nullptr, nullptr, nullptr, napi_default, nullptr},
3049         {"scalbf", nullptr, Scalbf, nullptr, nullptr, nullptr, napi_default, nullptr},
3050         {"y0", nullptr, Y0, nullptr, nullptr, nullptr, napi_default, nullptr},
3051         {"y0f", nullptr, Y0f, nullptr, nullptr, nullptr, napi_default, nullptr},
3052         {"y1", nullptr, Y1, nullptr, nullptr, nullptr, napi_default, nullptr},
3053         {"y1f", nullptr, Y1f, nullptr, nullptr, nullptr, napi_default, nullptr},
3054         {"cbrt", nullptr, CBrt, nullptr, nullptr, nullptr, napi_default, nullptr},
3055         {"cbrtf", nullptr, CBrtF, nullptr, nullptr, nullptr, napi_default, nullptr},
3056         {"cbrtl", nullptr, CBrtL, nullptr, nullptr, nullptr, napi_default, nullptr},
3057         {"frexp", nullptr, Frexp, nullptr, nullptr, nullptr, napi_default, nullptr},
3058         {"frexpl", nullptr, Frexpl, nullptr, nullptr, nullptr, napi_default, nullptr},
3059         {"frexpf", nullptr, Frexpf, nullptr, nullptr, nullptr, napi_default, nullptr},
3060         {"fpclassifyl", nullptr, Fpclassifyl, nullptr, nullptr, nullptr, napi_default, nullptr},
3061         {"fpclassify", nullptr, Fpclassify, nullptr, nullptr, nullptr, napi_default, nullptr},
3062         {"fpclassifyf", nullptr, Fpclassifyf, nullptr, nullptr, nullptr, napi_default, nullptr},
3063         {"signbit", nullptr, Signbit, nullptr, nullptr, nullptr, napi_default, nullptr},
3064         {"signbitf", nullptr, Signbitf, nullptr, nullptr, nullptr, napi_default, nullptr},
3065         {"signbitl", nullptr, Signbitl, nullptr, nullptr, nullptr, napi_default, nullptr},
3066         {"nan", nullptr, Nan, nullptr, nullptr, nullptr, napi_default, nullptr},
3067         {"nanl", nullptr, Nanl, nullptr, nullptr, nullptr, napi_default, nullptr},
3068         {"nanf", nullptr, Nanf, nullptr, nullptr, nullptr, napi_default, nullptr},
3069         {"nearbyint", nullptr, Nearbyint, nullptr, nullptr, nullptr, napi_default, nullptr},
3070         {"nearbyintf", nullptr, Nearbyintf, nullptr, nullptr, nullptr, napi_default, nullptr},
3071         {"nearbyintl", nullptr, Nearbyintl, nullptr, nullptr, nullptr, napi_default, nullptr},
3072         {"nextafter", nullptr, Nextafter, nullptr, nullptr, nullptr, napi_default, nullptr},
3073         {"nextafterl", nullptr, Nextafterl, nullptr, nullptr, nullptr, napi_default, nullptr},
3074         {"nextafterf", nullptr, Nextafterf, nullptr, nullptr, nullptr, napi_default, nullptr},
3075         {"nextToward", nullptr, NextToward, nullptr, nullptr, nullptr, napi_default, nullptr},
3076         {"nextTowardF", nullptr, NextTowardF, nullptr, nullptr, nullptr, napi_default, nullptr},
3077         {"nextTowardL", nullptr, NextTowardL, nullptr, nullptr, nullptr, napi_default, nullptr},
3078         {"pow", nullptr, Pow, nullptr, nullptr, nullptr, napi_default, nullptr},
3079         {"powf", nullptr, Powf, nullptr, nullptr, nullptr, napi_default, nullptr},
3080         {"powl", nullptr, Powl, nullptr, nullptr, nullptr, napi_default, nullptr},
3081         {"modF", nullptr, ModF, nullptr, nullptr, nullptr, napi_default, nullptr},
3082         {"modFf", nullptr, ModFf, nullptr, nullptr, nullptr, napi_default, nullptr},
3083         {"modFl", nullptr, ModFl, nullptr, nullptr, nullptr, napi_default, nullptr},
3084         {"mRand48", nullptr, MRand48, nullptr, nullptr, nullptr, napi_default, nullptr},
3085         {"lgamma", nullptr, Lgamma, nullptr, nullptr, nullptr, napi_default, nullptr},
3086         {"lgammaf", nullptr, Lgammaf, nullptr, nullptr, nullptr, napi_default, nullptr},
3087         {"lgammal", nullptr, Lgammal, nullptr, nullptr, nullptr, napi_default, nullptr},
3088         {"lgammaR", nullptr, Lgamma_r, nullptr, nullptr, nullptr, napi_default, nullptr},
3089         {"lgammafR", nullptr, Lgammaf_r, nullptr, nullptr, nullptr, napi_default, nullptr},
3090         {"lgammalR", nullptr, Lgammal_r, nullptr, nullptr, nullptr, napi_default, nullptr},
3091         {"llrint", nullptr, LLrint, nullptr, nullptr, nullptr, napi_default, nullptr},
3092         {"llrintF", nullptr, LLrintf, nullptr, nullptr, nullptr, napi_default, nullptr},
3093         {"llrintL", nullptr, LLrintl, nullptr, nullptr, nullptr, napi_default, nullptr},
3094         {"llround", nullptr, LLround, nullptr, nullptr, nullptr, napi_default, nullptr},
3095         {"llroundF", nullptr, LLroundf, nullptr, nullptr, nullptr, napi_default, nullptr},
3096         {"llroundL", nullptr, LLroundl, nullptr, nullptr, nullptr, napi_default, nullptr},
3097         {"yn", nullptr, Yn, nullptr, nullptr, nullptr, napi_default, nullptr},
3098         {"ynf", nullptr, Ynf, nullptr, nullptr, nullptr, napi_default, nullptr},
3099         {"lRint", nullptr, LRint, nullptr, nullptr, nullptr, napi_default, nullptr},
3100         {"lRintf", nullptr, LRintf, nullptr, nullptr, nullptr, napi_default, nullptr},
3101         {"lRintl", nullptr, LRintl, nullptr, nullptr, nullptr, napi_default, nullptr},
3102         {"lRound", nullptr, LRound, nullptr, nullptr, nullptr, napi_default, nullptr},
3103         {"lRoundl", nullptr, LRoundl, nullptr, nullptr, nullptr, napi_default, nullptr},
3104         {"lRoundf", nullptr, LRoundf, nullptr, nullptr, nullptr, napi_default, nullptr},
3105         {"ilogb", nullptr, ILogb, nullptr, nullptr, nullptr, napi_default, nullptr},
3106         {"ilogbf", nullptr, ILogbf, nullptr, nullptr, nullptr, napi_default, nullptr},
3107         {"ilogbl", nullptr, ILogbl, nullptr, nullptr, nullptr, napi_default, nullptr},
3108         {"hypot", nullptr, HYpot, nullptr, nullptr, nullptr, napi_default, nullptr},
3109         {"hypotf", nullptr, HYpotf, nullptr, nullptr, nullptr, napi_default, nullptr},
3110         {"hypotl", nullptr, HYpotl, nullptr, nullptr, nullptr, napi_default, nullptr},
3111         {"signGam", nullptr, SignGam, nullptr, nullptr, nullptr, napi_default, nullptr},
3112 
3113     };
3114     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
3115     return exports;
3116 }
3117 
3118 EXTERN_C_END
3119 
3120 static napi_module demoModule = {
3121     .nm_version = 1,
3122     .nm_flags = 0,
3123     .nm_filename = nullptr,
3124     .nm_register_func = Init,
3125     .nm_modname = "math",
3126     .nm_priv = ((void *)0),
3127     .reserved = {0},
3128 };
3129 
RegisterEntryModule(void)3130 extern "C" __attribute__((constructor)) void RegisterEntryModule(void) { napi_module_register(&demoModule); }
3131