1use std::array::IntoIter;
2
3use crate::{
4 calc_result::CalcResult,
5 expressions::{parser::Node, token::Error, types::CellReferenceIndex},
6 language::{get_default_language, Functions, Language},
7 model::Model,
8};
9
10pub(crate) mod binary_search;
11mod database;
12pub(crate) mod date_and_time;
13mod engineering;
14mod financial;
15mod information;
16mod logical;
17mod lookup_and_reference;
18mod macros;
19mod math_and_trigonometry;
20mod spill_functions;
21mod statistical;
22mod subtotal;
23mod text;
24pub(crate) mod util;
25mod xlookup;
26
27#[derive(PartialEq, Clone, Debug)]
29pub enum Function {
30 And,
32 False,
33 If,
34 Iferror,
35 Ifna,
36 Ifs,
37 Lambda,
38 Let,
39 Not,
40 Or,
41 Switch,
42 True,
43 Xor,
44 Bycol,
45 Byrow,
46 Map,
47 Reduce,
48 Scan,
49 Makearray,
50
51 Abs,
53 Acos,
54 Acosh,
55 Asin,
56 Asinh,
57 Atan,
58 Atan2,
59 Atanh,
60 Choose,
61 Column,
62 Columns,
63 Cos,
64 Cosh,
65 Log,
66 Log10,
67 Ln,
68 Max,
69 Min,
70 Pi,
71 Power,
72 Product,
73 Rand,
74 Randbetween,
75 Round,
76 Rounddown,
77 Roundup,
78 Sin,
79 Sinh,
80 Sqrt,
81 Sqrtpi,
82 Sum,
83 Sumif,
84 Sumifs,
85 Sumx2my2,
86 Sumx2py2,
87 Sumxmy2,
88 Tan,
89 Tanh,
90 Acot,
91 Acoth,
92 Cot,
93 Coth,
94 Csc,
95 Csch,
96 Sec,
97 Sech,
98 Exp,
99 Fact,
100 Factdouble,
101 Sign,
102 Radians,
103 Degrees,
104 Int,
105 Even,
106 Odd,
107 Ceiling,
108 CeilingMath,
109 CeilingPrecise,
110 Floor,
111 FloorMath,
112 FloorPrecise,
113 IsoCeiling,
114 Mod,
115 Quotient,
116 Mround,
117 Trunc,
118 Gcd,
119 Lcm,
120 Base,
121 Decimal,
122 Roman,
123 Arabic,
124 Combin,
125 Combina,
126 Sumsq,
127 Mdeterm,
128 Minverse,
129 Munit,
130 Multinomial,
131 Seriessum,
132 Sumproduct,
133 Percentof,
134
135 ErrorType,
137 Formulatext,
138 Isblank,
139 Iserr,
140 Iserror,
141 Iseven,
142 Isformula,
143 Islogical,
144 Isna,
145 Isnontext,
146 Isnumber,
147 Isodd,
148 Isomitted,
149 Isref,
150 Istext,
151 Na,
152 Sheet,
153 Type,
154
155 Sheets,
156 N,
157 Cell,
158 Info,
159
160 Address,
162 Areas,
163 Choosecols,
164 Chooserows,
165 Expand,
166 Filter,
167 Hlookup,
168 Hstack,
169 Hyperlink,
170 Index,
171 Indirect,
172 Lookup,
173 Match,
174 Offset,
175 Row,
176 Rows,
177 Sort,
178 Sortby,
179 Unique,
180 Vlookup,
181 Vstack,
182 Wrapcols,
183 Wraprows,
184 Xlookup,
185 Xmatch,
186 Trimrange,
187 Take,
188 Drop,
189 Tocol,
190 Torow,
191 Transpose,
192 Mmult,
193
194 Sequence,
196 Randarray,
197
198 Concat,
200 Textsplit,
201 Concatenate,
202 Exact,
203 Find,
204 Left,
205 Len,
206 Lower,
207 Mid,
208 Rept,
209 Right,
210 Search,
211 Substitute,
212 Regexextract,
213 Regexreplace,
214 Regextest,
215 T,
216 Text,
217 Textafter,
218 Textbefore,
219 Textjoin,
220 Trim,
221 Unicode,
222 Unichar,
223 Char,
224 Clean,
225 Code,
226 Asc,
227 Arraytotext,
228 Dollar,
229 Findb,
230 Fixed,
231 Leftb,
232 Lenb,
233 Midb,
234 Numbervalue,
235 Proper,
236 Replace,
237 Replaceb,
238 Rightb,
239 Searchb,
240 Upper,
241 Value,
242 Valuetotext,
243
244 Average,
246 Averagea,
247 Averageif,
248 Averageifs,
249 Count,
250 Counta,
251 Countblank,
252 Countif,
253 Countifs,
254 Maxifs,
255 Minifs,
256 Geomean,
257
258 Frequency,
259 Growth,
260
261 Avedev,
262 BetaDist,
263 BetaInv,
264 BinomDist,
265 BinomDistRange,
266 BinomInv,
267 ChisqDist,
268 ChisqDistRT,
269 ChisqInv,
270 ChisqInvRT,
271 ChisqTest,
272 ConfidenceNorm,
273 ConfidenceT,
274 CovarianceP,
275 CovarianceS,
276 Devsq,
277 ExponDist,
278 FDist,
279 FDistRT,
280 FInv,
281 FInvRT,
282 FTest,
283 Fisher,
284 FisherInv,
285 Forecast,
286 ForecastLinear,
287 ForecastEts,
288 ForecastEtsConfint,
289 ForecastEtsSeasonality,
290 ForecastEtsStat,
291 Gamma,
292 GammaDist,
293 GammaInv,
294 GammaLn,
295 GammaLnPrecise,
296 Gauss,
297 Harmean,
298 HypGeomDist,
299 Kurt,
300 Large,
301 Linest,
302 Logest,
303 LogNormDist,
304 LogNormInv,
305 MaxA,
306 Median,
307 MinA,
308 ModeMult,
309 ModeSingl,
310 NegbinomDist,
311 NormDist,
312 NormInv,
313 NormSdist,
314 NormSInv,
315 Pearson,
316 PercentileExc,
317 PercentileInc,
318 PercentrankExc,
319 PercentrankInc,
320 Permut,
321 Permutationa,
322 Phi,
323 PoissonDist,
324 Prob,
325 QuartileExc,
326 QuartileInc,
327 RankAvg,
328 RankEq,
329 Skew,
330 SkewP,
331 Small,
332 Standardize,
333 Stdev,
334 StDevP,
335 StDevS,
336 Stdeva,
337 Stdevpa,
338 TDist,
339 TDist2T,
340 TDistRT,
341 TInv,
342 TInv2T,
343 TTest,
344 Trend,
345 Trimmean,
346 VarP,
347 VarS,
348 VarpA,
349 VarA,
350 WeibullDist,
351 ZTest,
352
353 BetaDistCompat,
355 HypGeomDistCompat,
356 LogNormDistCompat,
357 NegbinomDistCompat,
358 NormSDistCompat,
359 TDistCompat,
360 BetaInvCompat,
362 BinomDistCompat,
363 ChiDistCompat,
364 ChiInvCompat,
365 ChiTestCompat,
366 ConfidenceCompat,
367 CovarCompat,
368 CritbinomCompat,
369 ExponDistCompat,
370 FDistCompat,
371 FInvCompat,
372 FTestCompat,
373 GammaDistCompat,
374 GammaInvCompat,
375 LoginvCompat,
376 ModeCompat,
377 NormDistCompat,
378 NormInvCompat,
379 NormSInvCompat,
380 PercentileCompat,
381 PercentrankCompat,
382 PoissonCompat,
383 QuartileCompat,
384 RankCompat,
385 StDevPCompat,
386 TInvCompat,
387 TTestCompat,
388 VarCompat,
389 VarPCompat,
390 WeibullCompat,
391 ZTestCompat,
392
393 Date,
395 Datedif,
396 Datevalue,
397 Day,
398 Edate,
399 Eomonth,
400 Month,
401 Time,
402 Timevalue,
403 Hour,
404 Minute,
405 Second,
406 Now,
407 Today,
408 Year,
409 Networkdays,
410 NetworkdaysIntl,
411 Days,
412 Days360,
413 Weekday,
414 Weeknum,
415 Workday,
416 WorkdayIntl,
417 Yearfrac,
418 Isoweeknum,
419
420 Accrint,
422 Accrintm,
423 Disc,
424 Fvschedule,
425 Intrate,
426 Pricedisc,
427 Pricemat,
428 Received,
429 Yielddisc,
430 Yieldmat,
431 Cumipmt,
432 Cumprinc,
433 Db,
434 Ddb,
435 Dollarde,
436 Dollarfr,
437 Effect,
438 Fv,
439 Ipmt,
440 Irr,
441 Ispmt,
442 Mirr,
443 Nominal,
444 Nper,
445 Npv,
446 Pduration,
447 Pmt,
448 Ppmt,
449 Pv,
450 Rate,
451 Rri,
452 Sln,
453 Syd,
454 Tbilleq,
455 Tbillprice,
456 Tbillyield,
457 Xirr,
458 Xnpv,
459 Duration,
460 Mduration,
461 Price,
462 Yield,
463 Oddfprice,
464 Oddfyield,
465 Oddlprice,
466 Oddlyield,
467 Coupdaybs,
468 Coupdays,
469 Coupdaysnc,
470 Coupncd,
471 Coupnum,
472 Couppcd,
473 Amordegrc,
474 Amorlinc,
475 Vdb,
476
477 Besseli,
479 Besselj,
480 Besselk,
481 Bessely,
482 Erf,
483 Erfc,
484 ErfcPrecise,
485 ErfPrecise,
486
487 Bin2dec,
489 Bin2hex,
490 Bin2oct,
491 Dec2Bin,
492 Dec2hex,
493 Dec2oct,
494 Hex2bin,
495 Hex2dec,
496 Hex2oct,
497 Oct2bin,
498 Oct2dec,
499 Oct2hex,
500
501 Bitand,
503 Bitlshift,
504 Bitor,
505 Bitrshift,
506 Bitxor,
507
508 Complex,
510 Imabs,
511 Imaginary,
512 Imargument,
513 Imconjugate,
514 Imcos,
515 Imcosh,
516 Imcot,
517 Imcsc,
518 Imcsch,
519 Imdiv,
520 Imexp,
521 Imln,
522 Imlog10,
523 Imlog2,
524 Impower,
525 Improduct,
526 Imreal,
527 Imsec,
528 Imsech,
529 Imsin,
530 Imsinh,
531 Imsqrt,
532 Imsub,
533 Imsum,
534 Imtan,
535
536 Convert,
538 Delta,
539 Gestep,
540 Subtotal,
541
542 Daverage,
544 Dcount,
545 Dget,
546 Dmax,
547 Dmin,
548 Dsum,
549 Dcounta,
550 Dproduct,
551 Dstdev,
552 Dvar,
553 Dvarp,
554 Dstdevp,
555
556 Correl,
557 Rsq,
558 Intercept,
559 Slope,
560 Steyx,
561}
562
563macro_rules! impl_function_lookup {
564 ($($field:ident => $variant:ident),+ $(,)?) => {
565 impl Functions {
566 pub fn lookup(&self, name: &str) -> Option<Function> {
567 let key = name.to_uppercase();
568 $(
569 if self.$field == key {
570 return Some(Function::$variant);
571 }
572 )*
573 None
574 }
575 }
576 }
577}
578
579impl_function_lookup! {
580 and => And,
582 r#false => False,
583 r#if => If,
584 iferror => Iferror,
585 ifna => Ifna,
586 ifs => Ifs,
587 lambda => Lambda,
588 r#let => Let,
589 not => Not,
590 or => Or,
591 switch => Switch,
592 r#true => True,
593 xor => Xor,
594 bycol => Bycol,
595 byrow => Byrow,
596 map => Map,
597 reduce => Reduce,
598 scan => Scan,
599 makearray => Makearray,
600
601 abs => Abs,
603 acos => Acos,
604 acosh => Acosh,
605 asin => Asin,
606 asinh => Asinh,
607 atan => Atan,
608 atan2 => Atan2,
609 atanh => Atanh,
610 choose => Choose,
611 column => Column,
612 columns => Columns,
613 cos => Cos,
614 cosh => Cosh,
615 log => Log,
616 log10 => Log10,
617 ln => Ln,
618 max => Max,
619 min => Min,
620 pi => Pi,
621 power => Power,
622 product => Product,
623 rand => Rand,
624 randbetween => Randbetween,
625 round => Round,
626 rounddown => Rounddown,
627 roundup => Roundup,
628 sin => Sin,
629 sinh => Sinh,
630 sqrt => Sqrt,
631 sqrtpi => Sqrtpi,
632 sum => Sum,
633 sumif => Sumif,
634 sumifs => Sumifs,
635 sumx2my2 => Sumx2my2,
636 sumx2py2 => Sumx2py2,
637 sumxmy2 => Sumxmy2,
638 tan => Tan,
639 tanh => Tanh,
640 acot => Acot,
641 acoth => Acoth,
642 cot => Cot,
643 coth => Coth,
644 csc => Csc,
645 csch => Csch,
646 sec => Sec,
647 sech => Sech,
648 exp => Exp,
649 fact => Fact,
650 factdouble => Factdouble,
651 sign => Sign,
652 radians => Radians,
653 degrees => Degrees,
654 int => Int,
655 even => Even,
656 odd => Odd,
657 ceiling => Ceiling,
658 ceilingmath => CeilingMath,
659 ceilingprecise => CeilingPrecise,
660 floor => Floor,
661 floormath => FloorMath,
662 floorprecise => FloorPrecise,
663 isoceiling => IsoCeiling,
664 r#mod => Mod,
665 quotient => Quotient,
666 mround => Mround,
667 trunc => Trunc,
668 gcd => Gcd,
669 lcm => Lcm,
670 base => Base,
671 decimal => Decimal,
672 roman => Roman,
673 arabic => Arabic,
674 combin => Combin,
675 combina => Combina,
676 sumsq => Sumsq,
677 mdeterm => Mdeterm,
678 minverse => Minverse,
679 munit => Munit,
680 multinomial => Multinomial,
681 seriessum => Seriessum,
682 sumproduct => Sumproduct,
683 percentof => Percentof,
684
685 errortype => ErrorType,
687 formulatext => Formulatext,
688 isblank => Isblank,
689 iserr => Iserr,
690 iserror => Iserror,
691 iseven => Iseven,
692 isformula => Isformula,
693 islogical => Islogical,
694 isna => Isna,
695 isnontext => Isnontext,
696 isnumber => Isnumber,
697 isodd => Isodd,
698 isomitted => Isomitted,
699 isref => Isref,
700 istext => Istext,
701 na => Na,
702 sheet => Sheet,
703 r#type => Type,
704
705 sheets => Sheets,
706 n => N,
707 cell => Cell,
708 info => Info,
709
710 address => Address,
712 areas => Areas,
713 choosecols => Choosecols,
714 chooserows => Chooserows,
715 expand => Expand,
716 filter => Filter,
717 hlookup => Hlookup,
718 hstack => Hstack,
719 hyperlink => Hyperlink,
720 index => Index,
721 indirect => Indirect,
722 lookup => Lookup,
723 r#match => Match,
724 offset => Offset,
725 row => Row,
726 rows => Rows,
727 sort => Sort,
728 sortby => Sortby,
729 unique => Unique,
730 vlookup => Vlookup,
731 vstack => Vstack,
732 wrapcols => Wrapcols,
733 wraprows => Wraprows,
734 xlookup => Xlookup,
735 xmatch => Xmatch,
736 trimrange => Trimrange,
737 take => Take,
738 drop => Drop,
739 tocol => Tocol,
740 torow => Torow,
741 transpose => Transpose,
742 mmult => Mmult,
743
744 sequence => Sequence,
746 randarray => Randarray,
747
748 concat => Concat,
750 textsplit => Textsplit,
751 concatenate => Concatenate,
752 exact => Exact,
753 find => Find,
754 left => Left,
755 len => Len,
756 lower => Lower,
757 mid => Mid,
758 rept => Rept,
759 right => Right,
760 search => Search,
761 substitute => Substitute,
762 regexextract => Regexextract,
763 regexreplace => Regexreplace,
764 regextest => Regextest,
765 t => T,
766 text => Text,
767 textafter => Textafter,
768 textbefore => Textbefore,
769 textjoin => Textjoin,
770 trim => Trim,
771 unicode => Unicode,
772 unichar => Unichar,
773 char => Char,
774 clean => Clean,
775 code => Code,
776 asc => Asc,
777 arraytotext => Arraytotext,
778 dollar => Dollar,
779 findb => Findb,
780 fixed => Fixed,
781 leftb => Leftb,
782 lenb => Lenb,
783 midb => Midb,
784 numbervalue => Numbervalue,
785 proper => Proper,
786 replace => Replace,
787 replaceb => Replaceb,
788 rightb => Rightb,
789 searchb => Searchb,
790 upper => Upper,
791 value => Value,
792 valuetotext => Valuetotext,
793
794 average => Average,
796 averagea => Averagea,
797 averageif => Averageif,
798 averageifs => Averageifs,
799 count => Count,
800 counta => Counta,
801 countblank => Countblank,
802 countif => Countif,
803 countifs => Countifs,
804 maxifs => Maxifs,
805 minifs => Minifs,
806 geomean => Geomean,
807 avedev => Avedev,
808 betadist => BetaDist,
809 betainv => BetaInv,
810 binomdist => BinomDist,
811 binomdistrange => BinomDistRange,
812 binominv => BinomInv,
813 chisqdist => ChisqDist,
814 chisqdistrt => ChisqDistRT,
815 chisqinv => ChisqInv,
816 chisqinvrt => ChisqInvRT,
817 chisqtest => ChisqTest,
818 confidencenorm => ConfidenceNorm,
819 confidencet => ConfidenceT,
820 covariancep => CovarianceP,
821 covariances => CovarianceS,
822 devsq => Devsq,
823 expondist => ExponDist,
824 fdist => FDist,
825 fdistrt => FDistRT,
826 finv => FInv,
827 finvrt => FInvRT,
828 ftest => FTest,
829 fisher => Fisher,
830 fisherinv => FisherInv,
831 gamma => Gamma,
832 gammadist => GammaDist,
833 gammainv => GammaInv,
834 gammaln => GammaLn,
835 gammalnprecise => GammaLnPrecise,
836 gauss => Gauss,
837 harmean => Harmean,
838 hypgeomdist => HypGeomDist,
839 kurt => Kurt,
840 large => Large,
841 lognormdist => LogNormDist,
842 lognorminv => LogNormInv,
843 maxa => MaxA,
844 median => Median,
845 mina => MinA,
846 negbinomdist => NegbinomDist,
847 normdist => NormDist,
848 norminv => NormInv,
849 normsdist => NormSdist,
850 normsinv => NormSInv,
851 pearson => Pearson,
852 phi => Phi,
853 poissondist => PoissonDist,
854 rankavg => RankAvg,
855 rankeq => RankEq,
856 skew => Skew,
857 skewp => SkewP,
858 small => Small,
859 standardize => Standardize,
860 stdev => Stdev,
861 stdevp => StDevP,
862 stdevs => StDevS,
863 stdeva => Stdeva,
864 stdevpa => Stdevpa,
865 tdist => TDist,
866 tdist2t => TDist2T,
867 tdistrt => TDistRT,
868 tinv => TInv,
869 tinv2t => TInv2T,
870 ttest => TTest,
871 varp => VarP,
872 vars => VarS,
873 varpa => VarpA,
874 vara => VarA,
875 weibulldist => WeibullDist,
876 ztest => ZTest,
877
878 betadistcompat => BetaDistCompat,
880 hypgeomdistcompat => HypGeomDistCompat,
881 lognormdistcompat => LogNormDistCompat,
882 negbinomdistcompat => NegbinomDistCompat,
883 normsdistcompat => NormSDistCompat,
884 tdistcompat => TDistCompat,
885 chidist => ChiDistCompat,
887 chiinv => ChiInvCompat,
888 chitest => ChiTestCompat,
889 confidence => ConfidenceCompat,
890 covar => CovarCompat,
891 critbinom => CritbinomCompat,
892 loginv => LoginvCompat,
893 betainvcompat => BetaInvCompat,
894 binomdistcompat => BinomDistCompat,
895 expondistcompat => ExponDistCompat,
896 fdistcompat => FDistCompat,
897 finvcompat => FInvCompat,
898 ftestcompat => FTestCompat,
899 gammadistcompat => GammaDistCompat,
900 gammainvcompat => GammaInvCompat,
901 modecompat => ModeCompat,
902 normdistcompat => NormDistCompat,
903 norminvcompat => NormInvCompat,
904 normsinvcompat => NormSInvCompat,
905 percentilecompat => PercentileCompat,
906 percentrankcompat => PercentrankCompat,
907 poissoncompat => PoissonCompat,
908 quartilecompat => QuartileCompat,
909 rankcompat => RankCompat,
910 stdevpcompat => StDevPCompat,
911 tinvcompat => TInvCompat,
912 ttestcompat => TTestCompat,
913 varcompat => VarCompat,
914 varpcompat => VarPCompat,
915 weibullcompat => WeibullCompat,
916 ztestcompat => ZTestCompat,
917
918 date => Date,
920 datedif => Datedif,
921 datevalue => Datevalue,
922 day => Day,
923 edate => Edate,
924 eomonth => Eomonth,
925 month => Month,
926 time => Time,
927 timevalue => Timevalue,
928 hour => Hour,
929 minute => Minute,
930 second => Second,
931 now => Now,
932 today => Today,
933 year => Year,
934 networkdays => Networkdays,
935 networkdaysintl => NetworkdaysIntl,
936 days => Days,
937 days360 => Days360,
938 weekday => Weekday,
939 weeknum => Weeknum,
940 workday => Workday,
941 workdayintl => WorkdayIntl,
942 yearfrac => Yearfrac,
943 isoweeknum => Isoweeknum,
944
945 accrint => Accrint,
947 accrintm => Accrintm,
948 disc => Disc,
949 fvschedule => Fvschedule,
950 intrate => Intrate,
951 pricedisc => Pricedisc,
952 pricemat => Pricemat,
953 received => Received,
954 yielddisc => Yielddisc,
955 yieldmat => Yieldmat,
956 cumipmt => Cumipmt,
957 cumprinc => Cumprinc,
958 db => Db,
959 ddb => Ddb,
960 dollarde => Dollarde,
961 dollarfr => Dollarfr,
962 effect => Effect,
963 fv => Fv,
964 ipmt => Ipmt,
965 irr => Irr,
966 ispmt => Ispmt,
967 mirr => Mirr,
968 nominal => Nominal,
969 nper => Nper,
970 npv => Npv,
971 pduration => Pduration,
972 pmt => Pmt,
973 ppmt => Ppmt,
974 pv => Pv,
975 rate => Rate,
976 rri => Rri,
977 sln => Sln,
978 syd => Syd,
979 tbilleq => Tbilleq,
980 tbillprice => Tbillprice,
981 tbillyield => Tbillyield,
982 xirr => Xirr,
983 xnpv => Xnpv,
984 duration => Duration,
985 mduration => Mduration,
986 price => Price,
987 r#yield => Yield,
988 oddfprice => Oddfprice,
989 oddfyield => Oddfyield,
990 oddlprice => Oddlprice,
991 oddlyield => Oddlyield,
992 coupdaybs => Coupdaybs,
993 coupdays => Coupdays,
994 coupdaysnc => Coupdaysnc,
995 coupncd => Coupncd,
996 coupnum => Coupnum,
997 couppcd => Couppcd,
998 amordegrc => Amordegrc,
999 amorlinc => Amorlinc,
1000 vdb => Vdb,
1001
1002 besseli => Besseli,
1004 besselj => Besselj,
1005 besselk => Besselk,
1006 bessely => Bessely,
1007 erf => Erf,
1008 erfc => Erfc,
1009 erfcprecise => ErfcPrecise,
1010 erfprecise => ErfPrecise,
1011
1012 bin2dec => Bin2dec,
1014 bin2hex => Bin2hex,
1015 bin2oct => Bin2oct,
1016 dec2bin => Dec2Bin,
1017 dec2hex => Dec2hex,
1018 dec2oct => Dec2oct,
1019 hex2bin => Hex2bin,
1020 hex2dec => Hex2dec,
1021 hex2oct => Hex2oct,
1022 oct2bin => Oct2bin,
1023 oct2dec => Oct2dec,
1024 oct2hex => Oct2hex,
1025
1026 bitand => Bitand,
1028 bitlshift => Bitlshift,
1029 bitor => Bitor,
1030 bitrshift => Bitrshift,
1031 bitxor => Bitxor,
1032
1033 complex => Complex,
1035 imabs => Imabs,
1036 imaginary => Imaginary,
1037 imargument => Imargument,
1038 imconjugate => Imconjugate,
1039 imcos => Imcos,
1040 imcosh => Imcosh,
1041 imcot => Imcot,
1042 imcsc => Imcsc,
1043 imcsch => Imcsch,
1044 imdiv => Imdiv,
1045 imexp => Imexp,
1046 imln => Imln,
1047 imlog10 => Imlog10,
1048 imlog2 => Imlog2,
1049 impower => Impower,
1050 improduct => Improduct,
1051 imreal => Imreal,
1052 imsec => Imsec,
1053 imsech => Imsech,
1054 imsin => Imsin,
1055 imsinh => Imsinh,
1056 imsqrt => Imsqrt,
1057 imsub => Imsub,
1058 imsum => Imsum,
1059 imtan => Imtan,
1060
1061 convert => Convert,
1063 delta => Delta,
1064 gestep => Gestep,
1065 subtotal => Subtotal,
1066
1067 daverage => Daverage,
1069 dcount => Dcount,
1070 dget => Dget,
1071 dmax => Dmax,
1072 dmin => Dmin,
1073 dsum => Dsum,
1074 dcounta => Dcounta,
1075 dproduct => Dproduct,
1076 dstdev => Dstdev,
1077 dvar => Dvar,
1078 dvarp => Dvarp,
1079 dstdevp => Dstdevp,
1080
1081 correl => Correl,
1083 rsq => Rsq,
1084 intercept => Intercept,
1085 slope => Slope,
1086 steyx => Steyx,
1087 forecast => Forecast,
1088 forecastlinear => ForecastLinear,
1089 forecastets => ForecastEts,
1090 forecastetsconfint => ForecastEtsConfint,
1091 forecastetsseasonality => ForecastEtsSeasonality,
1092 forecastetsstat => ForecastEtsStat,
1093 frequency => Frequency,
1094 growth => Growth,
1095 linest => Linest,
1096 logest => Logest,
1097 modemult => ModeMult,
1098 modesngl => ModeSingl,
1099 percentileexc => PercentileExc,
1100 percentileinc => PercentileInc,
1101 percentrankexc => PercentrankExc,
1102 percentrankinc => PercentrankInc,
1103 permut => Permut,
1104 permutationa => Permutationa,
1105 prob => Prob,
1106 quartileexc => QuartileExc,
1107 quartileinc => QuartileInc,
1108 trend => Trend,
1109 trimmean => Trimmean,
1110}
1111
1112impl Function {
1113 pub fn to_localized_name(&self, language: &Language) -> String {
1114 let functions = &language.functions;
1115 match self {
1116 Function::And => functions.and.clone(),
1117 Function::False => functions.r#false.clone(),
1118 Function::If => functions.r#if.clone(),
1119 Function::Iferror => functions.iferror.clone(),
1120 Function::Ifna => functions.ifna.clone(),
1121 Function::Ifs => functions.ifs.clone(),
1122 Function::Lambda => functions.lambda.clone(),
1123 Function::Let => functions.r#let.clone(),
1124 Function::Not => functions.not.clone(),
1125 Function::Or => functions.or.clone(),
1126 Function::Switch => functions.switch.clone(),
1127 Function::True => functions.r#true.clone(),
1128 Function::Xor => functions.xor.clone(),
1129 Function::Bycol => functions.bycol.clone(),
1130 Function::Byrow => functions.byrow.clone(),
1131 Function::Map => functions.map.clone(),
1132 Function::Reduce => functions.reduce.clone(),
1133 Function::Scan => functions.scan.clone(),
1134 Function::Makearray => functions.makearray.clone(),
1135 Function::Abs => functions.abs.clone(),
1136 Function::Acos => functions.acos.clone(),
1137 Function::Acosh => functions.acosh.clone(),
1138 Function::Asin => functions.asin.clone(),
1139 Function::Asinh => functions.asinh.clone(),
1140 Function::Atan => functions.atan.clone(),
1141 Function::Atan2 => functions.atan2.clone(),
1142 Function::Atanh => functions.atanh.clone(),
1143 Function::Choose => functions.choose.clone(),
1144 Function::Column => functions.column.clone(),
1145 Function::Columns => functions.columns.clone(),
1146 Function::Cos => functions.cos.clone(),
1147 Function::Cosh => functions.cosh.clone(),
1148 Function::Log => functions.log.clone(),
1149 Function::Log10 => functions.log10.clone(),
1150 Function::Ln => functions.ln.clone(),
1151 Function::Max => functions.max.clone(),
1152 Function::Min => functions.min.clone(),
1153 Function::Pi => functions.pi.clone(),
1154 Function::Power => functions.power.clone(),
1155 Function::Product => functions.product.clone(),
1156 Function::Rand => functions.rand.clone(),
1157 Function::Randbetween => functions.randbetween.clone(),
1158 Function::Round => functions.round.clone(),
1159 Function::Rounddown => functions.rounddown.clone(),
1160 Function::Roundup => functions.roundup.clone(),
1161 Function::Sin => functions.sin.clone(),
1162 Function::Sinh => functions.sinh.clone(),
1163 Function::Sqrt => functions.sqrt.clone(),
1164 Function::Sqrtpi => functions.sqrtpi.clone(),
1165 Function::Sum => functions.sum.clone(),
1166 Function::Sumif => functions.sumif.clone(),
1167 Function::Sumifs => functions.sumifs.clone(),
1168 Function::Sumx2my2 => functions.sumx2my2.clone(),
1169 Function::Sumx2py2 => functions.sumx2py2.clone(),
1170 Function::Sumxmy2 => functions.sumxmy2.clone(),
1171 Function::Tan => functions.tan.clone(),
1172 Function::Tanh => functions.tanh.clone(),
1173 Function::Acot => functions.acot.clone(),
1174 Function::Acoth => functions.acoth.clone(),
1175 Function::Cot => functions.cot.clone(),
1176 Function::Coth => functions.coth.clone(),
1177 Function::Csc => functions.csc.clone(),
1178 Function::Csch => functions.csch.clone(),
1179 Function::Sec => functions.sec.clone(),
1180 Function::Sech => functions.sech.clone(),
1181 Function::Exp => functions.exp.clone(),
1182 Function::Fact => functions.fact.clone(),
1183 Function::Factdouble => functions.factdouble.clone(),
1184 Function::Sign => functions.sign.clone(),
1185 Function::Radians => functions.radians.clone(),
1186 Function::Degrees => functions.degrees.clone(),
1187 Function::Int => functions.int.clone(),
1188 Function::Even => functions.even.clone(),
1189 Function::Odd => functions.odd.clone(),
1190 Function::Ceiling => functions.ceiling.clone(),
1191 Function::CeilingMath => functions.ceilingmath.clone(),
1192 Function::CeilingPrecise => functions.ceilingprecise.clone(),
1193 Function::Floor => functions.floor.clone(),
1194 Function::FloorMath => functions.floormath.clone(),
1195 Function::FloorPrecise => functions.floorprecise.clone(),
1196 Function::IsoCeiling => functions.isoceiling.clone(),
1197 Function::Mod => functions.r#mod.clone(),
1198 Function::Quotient => functions.quotient.clone(),
1199 Function::Mround => functions.mround.clone(),
1200 Function::Trunc => functions.trunc.clone(),
1201 Function::Gcd => functions.gcd.clone(),
1202 Function::Lcm => functions.lcm.clone(),
1203 Function::Base => functions.base.clone(),
1204 Function::Decimal => functions.decimal.clone(),
1205 Function::Roman => functions.roman.clone(),
1206 Function::Arabic => functions.arabic.clone(),
1207 Function::Combin => functions.combin.clone(),
1208 Function::Combina => functions.combina.clone(),
1209 Function::Sumsq => functions.sumsq.clone(),
1210 Function::Mdeterm => functions.mdeterm.clone(),
1211 Function::Minverse => functions.minverse.clone(),
1212 Function::Munit => functions.munit.clone(),
1213 Function::Multinomial => functions.multinomial.clone(),
1214 Function::Seriessum => functions.seriessum.clone(),
1215 Function::Sumproduct => functions.sumproduct.clone(),
1216 Function::Percentof => functions.percentof.clone(),
1217 Function::ErrorType => functions.errortype.clone(),
1218 Function::Formulatext => functions.formulatext.clone(),
1219 Function::Isblank => functions.isblank.clone(),
1220 Function::Iserr => functions.iserr.clone(),
1221 Function::Iserror => functions.iserror.clone(),
1222 Function::Iseven => functions.iseven.clone(),
1223 Function::Isformula => functions.isformula.clone(),
1224 Function::Islogical => functions.islogical.clone(),
1225 Function::Isna => functions.isna.clone(),
1226 Function::Isnontext => functions.isnontext.clone(),
1227 Function::Isnumber => functions.isnumber.clone(),
1228 Function::Isodd => functions.isodd.clone(),
1229 Function::Isomitted => functions.isomitted.clone(),
1230 Function::Isref => functions.isref.clone(),
1231 Function::Istext => functions.istext.clone(),
1232 Function::Na => functions.na.clone(),
1233 Function::Sheet => functions.sheet.clone(),
1234 Function::Type => functions.r#type.clone(),
1235 Function::Sheets => functions.sheets.clone(),
1236 Function::N => functions.n.clone(),
1237 Function::Cell => functions.cell.clone(),
1238 Function::Info => functions.info.clone(),
1239 Function::Address => functions.address.clone(),
1240 Function::Areas => functions.areas.clone(),
1241 Function::Choosecols => functions.choosecols.clone(),
1242 Function::Chooserows => functions.chooserows.clone(),
1243 Function::Expand => functions.expand.clone(),
1244 Function::Filter => functions.filter.clone(),
1245 Function::Hlookup => functions.hlookup.clone(),
1246 Function::Hstack => functions.hstack.clone(),
1247 Function::Hyperlink => functions.hyperlink.clone(),
1248 Function::Index => functions.index.clone(),
1249 Function::Indirect => functions.indirect.clone(),
1250 Function::Lookup => functions.lookup.clone(),
1251 Function::Match => functions.r#match.clone(),
1252 Function::Offset => functions.offset.clone(),
1253 Function::Row => functions.row.clone(),
1254 Function::Rows => functions.rows.clone(),
1255 Function::Sort => functions.sort.clone(),
1256 Function::Sortby => functions.sortby.clone(),
1257 Function::Unique => functions.unique.clone(),
1258 Function::Vlookup => functions.vlookup.clone(),
1259 Function::Vstack => functions.vstack.clone(),
1260 Function::Wrapcols => functions.wrapcols.clone(),
1261 Function::Wraprows => functions.wraprows.clone(),
1262 Function::Xlookup => functions.xlookup.clone(),
1263 Function::Xmatch => functions.xmatch.clone(),
1264 Function::Trimrange => functions.trimrange.clone(),
1265 Function::Take => functions.take.clone(),
1266 Function::Drop => functions.drop.clone(),
1267 Function::Tocol => functions.tocol.clone(),
1268 Function::Torow => functions.torow.clone(),
1269 Function::Transpose => functions.transpose.clone(),
1270 Function::Mmult => functions.mmult.clone(),
1271 Function::Sequence => functions.sequence.clone(),
1272 Function::Randarray => functions.randarray.clone(),
1273 Function::Concat => functions.concat.clone(),
1274 Function::Textsplit => functions.textsplit.clone(),
1275 Function::Concatenate => functions.concatenate.clone(),
1276 Function::Exact => functions.exact.clone(),
1277 Function::Find => functions.find.clone(),
1278 Function::Left => functions.left.clone(),
1279 Function::Len => functions.len.clone(),
1280 Function::Lower => functions.lower.clone(),
1281 Function::Mid => functions.mid.clone(),
1282 Function::Rept => functions.rept.clone(),
1283 Function::Right => functions.right.clone(),
1284 Function::Search => functions.search.clone(),
1285 Function::Substitute => functions.substitute.clone(),
1286 Function::Regexextract => functions.regexextract.clone(),
1287 Function::Regexreplace => functions.regexreplace.clone(),
1288 Function::Regextest => functions.regextest.clone(),
1289 Function::T => functions.t.clone(),
1290 Function::Text => functions.text.clone(),
1291 Function::Textafter => functions.textafter.clone(),
1292 Function::Textbefore => functions.textbefore.clone(),
1293 Function::Textjoin => functions.textjoin.clone(),
1294 Function::Trim => functions.trim.clone(),
1295 Function::Unicode => functions.unicode.clone(),
1296 Function::Unichar => functions.unichar.clone(),
1297 Function::Char => functions.r#char.clone(),
1298 Function::Clean => functions.clean.clone(),
1299 Function::Code => functions.code.clone(),
1300 Function::Asc => functions.asc.clone(),
1301 Function::Arraytotext => functions.arraytotext.clone(),
1302 Function::Dollar => functions.dollar.clone(),
1303 Function::Findb => functions.findb.clone(),
1304 Function::Fixed => functions.fixed.clone(),
1305 Function::Leftb => functions.leftb.clone(),
1306 Function::Lenb => functions.lenb.clone(),
1307 Function::Midb => functions.midb.clone(),
1308 Function::Numbervalue => functions.numbervalue.clone(),
1309 Function::Proper => functions.proper.clone(),
1310 Function::Replace => functions.replace.clone(),
1311 Function::Replaceb => functions.replaceb.clone(),
1312 Function::Rightb => functions.rightb.clone(),
1313 Function::Searchb => functions.searchb.clone(),
1314 Function::Upper => functions.upper.clone(),
1315 Function::Value => functions.value.clone(),
1316 Function::Valuetotext => functions.valuetotext.clone(),
1317 Function::Average => functions.average.clone(),
1318 Function::Averagea => functions.averagea.clone(),
1319 Function::Averageif => functions.averageif.clone(),
1320 Function::Averageifs => functions.averageifs.clone(),
1321 Function::Count => functions.count.clone(),
1322 Function::Counta => functions.counta.clone(),
1323 Function::Countblank => functions.countblank.clone(),
1324 Function::Countif => functions.countif.clone(),
1325 Function::Countifs => functions.countifs.clone(),
1326 Function::Maxifs => functions.maxifs.clone(),
1327 Function::Minifs => functions.minifs.clone(),
1328 Function::Geomean => functions.geomean.clone(),
1329 Function::Avedev => functions.avedev.clone(),
1330 Function::BetaDist => functions.betadist.clone(),
1331 Function::BetaInv => functions.betainv.clone(),
1332 Function::BinomDist => functions.binomdist.clone(),
1333 Function::BinomDistRange => functions.binomdistrange.clone(),
1334 Function::BinomInv => functions.binominv.clone(),
1335 Function::ChisqDist => functions.chisqdist.clone(),
1336 Function::ChisqDistRT => functions.chisqdistrt.clone(),
1337 Function::ChisqInv => functions.chisqinv.clone(),
1338 Function::ChisqInvRT => functions.chisqinvrt.clone(),
1339 Function::ChisqTest => functions.chisqtest.clone(),
1340 Function::ConfidenceNorm => functions.confidencenorm.clone(),
1341 Function::ConfidenceT => functions.confidencet.clone(),
1342 Function::CovarianceP => functions.covariancep.clone(),
1343 Function::CovarianceS => functions.covariances.clone(),
1344 Function::Devsq => functions.devsq.clone(),
1345 Function::ExponDist => functions.expondist.clone(),
1346 Function::FDist => functions.fdist.clone(),
1347 Function::FDistRT => functions.fdistrt.clone(),
1348 Function::FInv => functions.finv.clone(),
1349 Function::FInvRT => functions.finvrt.clone(),
1350 Function::FTest => functions.ftest.clone(),
1351 Function::Fisher => functions.fisher.clone(),
1352 Function::FisherInv => functions.fisherinv.clone(),
1353 Function::Gamma => functions.gamma.clone(),
1354 Function::GammaDist => functions.gammadist.clone(),
1355 Function::GammaInv => functions.gammainv.clone(),
1356 Function::GammaLn => functions.gammaln.clone(),
1357 Function::GammaLnPrecise => functions.gammalnprecise.clone(),
1358 Function::Gauss => functions.gauss.clone(),
1359 Function::Harmean => functions.harmean.clone(),
1360 Function::HypGeomDist => functions.hypgeomdist.clone(),
1361 Function::Kurt => functions.kurt.clone(),
1362 Function::Large => functions.large.clone(),
1363 Function::LogNormDist => functions.lognormdist.clone(),
1364 Function::LogNormInv => functions.lognorminv.clone(),
1365 Function::MaxA => functions.maxa.clone(),
1366 Function::Median => functions.median.clone(),
1367 Function::MinA => functions.mina.clone(),
1368 Function::NegbinomDist => functions.negbinomdist.clone(),
1369 Function::NormDist => functions.normdist.clone(),
1370 Function::NormInv => functions.norminv.clone(),
1371 Function::NormSdist => functions.normsdist.clone(),
1372 Function::NormSInv => functions.normsinv.clone(),
1373 Function::Pearson => functions.pearson.clone(),
1374 Function::Phi => functions.phi.clone(),
1375 Function::PoissonDist => functions.poissondist.clone(),
1376 Function::RankAvg => functions.rankavg.clone(),
1377 Function::RankEq => functions.rankeq.clone(),
1378 Function::Skew => functions.skew.clone(),
1379 Function::SkewP => functions.skewp.clone(),
1380 Function::Small => functions.small.clone(),
1381 Function::Standardize => functions.standardize.clone(),
1382 Function::Stdev => functions.stdev.clone(),
1383 Function::StDevP => functions.stdevp.clone(),
1384 Function::StDevS => functions.stdevs.clone(),
1385 Function::Stdeva => functions.stdeva.clone(),
1386 Function::Stdevpa => functions.stdevpa.clone(),
1387 Function::TDist => functions.tdist.clone(),
1388 Function::TDist2T => functions.tdist2t.clone(),
1389 Function::TDistRT => functions.tdistrt.clone(),
1390 Function::TInv => functions.tinv.clone(),
1391 Function::TInv2T => functions.tinv2t.clone(),
1392 Function::TTest => functions.ttest.clone(),
1393 Function::VarP => functions.varp.clone(),
1394 Function::VarS => functions.vars.clone(),
1395 Function::VarpA => functions.varpa.clone(),
1396 Function::VarA => functions.vara.clone(),
1397 Function::WeibullDist => functions.weibulldist.clone(),
1398 Function::ZTest => functions.ztest.clone(),
1399 Function::BetaDistCompat => functions.betadistcompat.clone(),
1400 Function::HypGeomDistCompat => functions.hypgeomdistcompat.clone(),
1401 Function::LogNormDistCompat => functions.lognormdistcompat.clone(),
1402 Function::NegbinomDistCompat => functions.negbinomdistcompat.clone(),
1403 Function::NormSDistCompat => functions.normsdistcompat.clone(),
1404 Function::TDistCompat => functions.tdistcompat.clone(),
1405 Function::BetaInvCompat => functions.betainvcompat.clone(),
1406 Function::BinomDistCompat => functions.binomdistcompat.clone(),
1407 Function::ChiDistCompat => functions.chidist.clone(),
1408 Function::ChiInvCompat => functions.chiinv.clone(),
1409 Function::ChiTestCompat => functions.chitest.clone(),
1410 Function::ConfidenceCompat => functions.confidence.clone(),
1411 Function::CovarCompat => functions.covar.clone(),
1412 Function::CritbinomCompat => functions.critbinom.clone(),
1413 Function::ExponDistCompat => functions.expondistcompat.clone(),
1414 Function::FDistCompat => functions.fdistcompat.clone(),
1415 Function::FInvCompat => functions.finvcompat.clone(),
1416 Function::FTestCompat => functions.ftestcompat.clone(),
1417 Function::GammaDistCompat => functions.gammadistcompat.clone(),
1418 Function::GammaInvCompat => functions.gammainvcompat.clone(),
1419 Function::LoginvCompat => functions.loginv.clone(),
1420 Function::ModeCompat => functions.modecompat.clone(),
1421 Function::NormDistCompat => functions.normdistcompat.clone(),
1422 Function::NormInvCompat => functions.norminvcompat.clone(),
1423 Function::NormSInvCompat => functions.normsinvcompat.clone(),
1424 Function::PercentileCompat => functions.percentilecompat.clone(),
1425 Function::PercentrankCompat => functions.percentrankcompat.clone(),
1426 Function::PoissonCompat => functions.poissoncompat.clone(),
1427 Function::QuartileCompat => functions.quartilecompat.clone(),
1428 Function::RankCompat => functions.rankcompat.clone(),
1429 Function::StDevPCompat => functions.stdevpcompat.clone(),
1430 Function::TInvCompat => functions.tinvcompat.clone(),
1431 Function::TTestCompat => functions.ttestcompat.clone(),
1432 Function::VarCompat => functions.varcompat.clone(),
1433 Function::VarPCompat => functions.varpcompat.clone(),
1434 Function::WeibullCompat => functions.weibullcompat.clone(),
1435 Function::ZTestCompat => functions.ztestcompat.clone(),
1436 Function::Date => functions.date.clone(),
1437 Function::Datedif => functions.datedif.clone(),
1438 Function::Datevalue => functions.datevalue.clone(),
1439 Function::Day => functions.day.clone(),
1440 Function::Edate => functions.edate.clone(),
1441 Function::Eomonth => functions.eomonth.clone(),
1442 Function::Month => functions.month.clone(),
1443 Function::Time => functions.time.clone(),
1444 Function::Timevalue => functions.timevalue.clone(),
1445 Function::Hour => functions.hour.clone(),
1446 Function::Minute => functions.minute.clone(),
1447 Function::Second => functions.second.clone(),
1448 Function::Now => functions.now.clone(),
1449 Function::Today => functions.today.clone(),
1450 Function::Year => functions.year.clone(),
1451 Function::Networkdays => functions.networkdays.clone(),
1452 Function::NetworkdaysIntl => functions.networkdaysintl.clone(),
1453 Function::Days => functions.days.clone(),
1454 Function::Days360 => functions.days360.clone(),
1455 Function::Weekday => functions.weekday.clone(),
1456 Function::Weeknum => functions.weeknum.clone(),
1457 Function::Workday => functions.workday.clone(),
1458 Function::WorkdayIntl => functions.workdayintl.clone(),
1459 Function::Yearfrac => functions.yearfrac.clone(),
1460 Function::Isoweeknum => functions.isoweeknum.clone(),
1461 Function::Accrint => functions.accrint.clone(),
1462 Function::Accrintm => functions.accrintm.clone(),
1463 Function::Disc => functions.disc.clone(),
1464 Function::Fvschedule => functions.fvschedule.clone(),
1465 Function::Intrate => functions.intrate.clone(),
1466 Function::Pricedisc => functions.pricedisc.clone(),
1467 Function::Pricemat => functions.pricemat.clone(),
1468 Function::Received => functions.received.clone(),
1469 Function::Yielddisc => functions.yielddisc.clone(),
1470 Function::Yieldmat => functions.yieldmat.clone(),
1471 Function::Cumipmt => functions.cumipmt.clone(),
1472 Function::Cumprinc => functions.cumprinc.clone(),
1473 Function::Db => functions.db.clone(),
1474 Function::Ddb => functions.ddb.clone(),
1475 Function::Dollarde => functions.dollarde.clone(),
1476 Function::Dollarfr => functions.dollarfr.clone(),
1477 Function::Effect => functions.effect.clone(),
1478 Function::Fv => functions.fv.clone(),
1479 Function::Ipmt => functions.ipmt.clone(),
1480 Function::Irr => functions.irr.clone(),
1481 Function::Ispmt => functions.ispmt.clone(),
1482 Function::Mirr => functions.mirr.clone(),
1483 Function::Nominal => functions.nominal.clone(),
1484 Function::Nper => functions.nper.clone(),
1485 Function::Npv => functions.npv.clone(),
1486 Function::Pduration => functions.pduration.clone(),
1487 Function::Pmt => functions.pmt.clone(),
1488 Function::Ppmt => functions.ppmt.clone(),
1489 Function::Pv => functions.pv.clone(),
1490 Function::Rate => functions.rate.clone(),
1491 Function::Rri => functions.rri.clone(),
1492 Function::Sln => functions.sln.clone(),
1493 Function::Syd => functions.syd.clone(),
1494 Function::Tbilleq => functions.tbilleq.clone(),
1495 Function::Tbillprice => functions.tbillprice.clone(),
1496 Function::Tbillyield => functions.tbillyield.clone(),
1497 Function::Xirr => functions.xirr.clone(),
1498 Function::Xnpv => functions.xnpv.clone(),
1499 Function::Duration => functions.duration.clone(),
1500 Function::Mduration => functions.mduration.clone(),
1501 Function::Price => functions.price.clone(),
1502 Function::Yield => functions.r#yield.clone(),
1503 Function::Oddfprice => functions.oddfprice.clone(),
1504 Function::Oddfyield => functions.oddfyield.clone(),
1505 Function::Oddlprice => functions.oddlprice.clone(),
1506 Function::Oddlyield => functions.oddlyield.clone(),
1507 Function::Coupdaybs => functions.coupdaybs.clone(),
1508 Function::Coupdays => functions.coupdays.clone(),
1509 Function::Coupdaysnc => functions.coupdaysnc.clone(),
1510 Function::Coupncd => functions.coupncd.clone(),
1511 Function::Coupnum => functions.coupnum.clone(),
1512 Function::Couppcd => functions.couppcd.clone(),
1513 Function::Amordegrc => functions.amordegrc.clone(),
1514 Function::Amorlinc => functions.amorlinc.clone(),
1515 Function::Vdb => functions.vdb.clone(),
1516 Function::Besseli => functions.besseli.clone(),
1517 Function::Besselj => functions.besselj.clone(),
1518 Function::Besselk => functions.besselk.clone(),
1519 Function::Bessely => functions.bessely.clone(),
1520 Function::Erf => functions.erf.clone(),
1521 Function::Erfc => functions.erfc.clone(),
1522 Function::ErfcPrecise => functions.erfcprecise.clone(),
1523 Function::ErfPrecise => functions.erfprecise.clone(),
1524 Function::Bin2dec => functions.bin2dec.clone(),
1525 Function::Bin2hex => functions.bin2hex.clone(),
1526 Function::Bin2oct => functions.bin2oct.clone(),
1527 Function::Dec2Bin => functions.dec2bin.clone(),
1528 Function::Dec2hex => functions.dec2hex.clone(),
1529 Function::Dec2oct => functions.dec2oct.clone(),
1530 Function::Hex2bin => functions.hex2bin.clone(),
1531 Function::Hex2dec => functions.hex2dec.clone(),
1532 Function::Hex2oct => functions.hex2oct.clone(),
1533 Function::Oct2bin => functions.oct2bin.clone(),
1534 Function::Oct2dec => functions.oct2dec.clone(),
1535 Function::Oct2hex => functions.oct2hex.clone(),
1536 Function::Bitand => functions.bitand.clone(),
1537 Function::Bitlshift => functions.bitlshift.clone(),
1538 Function::Bitor => functions.bitor.clone(),
1539 Function::Bitrshift => functions.bitrshift.clone(),
1540 Function::Bitxor => functions.bitxor.clone(),
1541 Function::Complex => functions.complex.clone(),
1542 Function::Imabs => functions.imabs.clone(),
1543 Function::Imaginary => functions.imaginary.clone(),
1544 Function::Imargument => functions.imargument.clone(),
1545 Function::Imconjugate => functions.imconjugate.clone(),
1546 Function::Imcos => functions.imcos.clone(),
1547 Function::Imcosh => functions.imcosh.clone(),
1548 Function::Imcot => functions.imcot.clone(),
1549 Function::Imcsc => functions.imcsc.clone(),
1550 Function::Imcsch => functions.imcsch.clone(),
1551 Function::Imdiv => functions.imdiv.clone(),
1552 Function::Imexp => functions.imexp.clone(),
1553 Function::Imln => functions.imln.clone(),
1554 Function::Imlog10 => functions.imlog10.clone(),
1555 Function::Imlog2 => functions.imlog2.clone(),
1556 Function::Impower => functions.impower.clone(),
1557 Function::Improduct => functions.improduct.clone(),
1558 Function::Imreal => functions.imreal.clone(),
1559 Function::Imsec => functions.imsec.clone(),
1560 Function::Imsech => functions.imsech.clone(),
1561 Function::Imsin => functions.imsin.clone(),
1562 Function::Imsinh => functions.imsinh.clone(),
1563 Function::Imsqrt => functions.imsqrt.clone(),
1564 Function::Imsub => functions.imsub.clone(),
1565 Function::Imsum => functions.imsum.clone(),
1566 Function::Imtan => functions.imtan.clone(),
1567 Function::Convert => functions.convert.clone(),
1568 Function::Delta => functions.delta.clone(),
1569 Function::Gestep => functions.gestep.clone(),
1570 Function::Subtotal => functions.subtotal.clone(),
1571 Function::Daverage => functions.daverage.clone(),
1572 Function::Dcount => functions.dcount.clone(),
1573 Function::Dget => functions.dget.clone(),
1574 Function::Dmax => functions.dmax.clone(),
1575 Function::Dmin => functions.dmin.clone(),
1576 Function::Dsum => functions.dsum.clone(),
1577 Function::Dcounta => functions.dcounta.clone(),
1578 Function::Dproduct => functions.dproduct.clone(),
1579 Function::Dstdev => functions.dstdev.clone(),
1580 Function::Dvar => functions.dvar.clone(),
1581 Function::Dvarp => functions.dvarp.clone(),
1582 Function::Dstdevp => functions.dstdevp.clone(),
1583 Function::Correl => functions.correl.clone(),
1584 Function::Rsq => functions.rsq.clone(),
1585 Function::Intercept => functions.intercept.clone(),
1586 Function::Slope => functions.slope.clone(),
1587 Function::Steyx => functions.steyx.clone(),
1588 Function::Forecast => functions.forecast.clone(),
1589 Function::ForecastLinear => functions.forecastlinear.clone(),
1590 Function::ForecastEts => functions.forecastets.clone(),
1591 Function::ForecastEtsConfint => functions.forecastetsconfint.clone(),
1592 Function::ForecastEtsSeasonality => functions.forecastetsseasonality.clone(),
1593 Function::ForecastEtsStat => functions.forecastetsstat.clone(),
1594 Function::Frequency => functions.frequency.clone(),
1595 Function::Growth => functions.growth.clone(),
1596 Function::Linest => functions.linest.clone(),
1597 Function::Logest => functions.logest.clone(),
1598 Function::ModeMult => functions.modemult.clone(),
1599 Function::ModeSingl => functions.modesngl.clone(),
1600 Function::PercentileExc => functions.percentileexc.clone(),
1601 Function::PercentileInc => functions.percentileinc.clone(),
1602 Function::PercentrankExc => functions.percentrankexc.clone(),
1603 Function::PercentrankInc => functions.percentrankinc.clone(),
1604 Function::Permut => functions.permut.clone(),
1605 Function::Permutationa => functions.permutationa.clone(),
1606 Function::Prob => functions.prob.clone(),
1607 Function::QuartileExc => functions.quartileexc.clone(),
1608 Function::QuartileInc => functions.quartileinc.clone(),
1609 Function::Trend => functions.trend.clone(),
1610 Function::Trimmean => functions.trimmean.clone(),
1611 }
1612 }
1613
1614 pub fn into_iter() -> IntoIter<Function, 495> {
1615 [
1616 Function::And,
1617 Function::False,
1618 Function::If,
1619 Function::Iferror,
1620 Function::Ifna,
1621 Function::Ifs,
1622 Function::Lambda,
1623 Function::Let,
1624 Function::Not,
1625 Function::Or,
1626 Function::Switch,
1627 Function::True,
1628 Function::Xor,
1629 Function::Bycol,
1630 Function::Byrow,
1631 Function::Map,
1632 Function::Reduce,
1633 Function::Scan,
1634 Function::Makearray,
1635 Function::Sin,
1636 Function::Cos,
1637 Function::Tan,
1638 Function::Asin,
1639 Function::Acos,
1640 Function::Atan,
1641 Function::Sinh,
1642 Function::Cosh,
1643 Function::Tanh,
1644 Function::Asinh,
1645 Function::Acosh,
1646 Function::Atanh,
1647 Function::Abs,
1648 Function::Pi,
1649 Function::Ln,
1650 Function::Log,
1651 Function::Log10,
1652 Function::Sqrt,
1653 Function::Sqrtpi,
1654 Function::Atan2,
1655 Function::Acot,
1656 Function::Acoth,
1657 Function::Cot,
1658 Function::Coth,
1659 Function::Csc,
1660 Function::Csch,
1661 Function::Sec,
1662 Function::Sech,
1663 Function::Power,
1664 Function::Exp,
1665 Function::Fact,
1666 Function::Factdouble,
1667 Function::Sign,
1668 Function::Int,
1669 Function::Even,
1670 Function::Odd,
1671 Function::Ceiling,
1672 Function::CeilingMath,
1673 Function::CeilingPrecise,
1674 Function::Floor,
1675 Function::FloorMath,
1676 Function::FloorPrecise,
1677 Function::IsoCeiling,
1678 Function::Mod,
1679 Function::Quotient,
1680 Function::Mround,
1681 Function::Trunc,
1682 Function::Gcd,
1683 Function::Lcm,
1684 Function::Base,
1685 Function::Decimal,
1686 Function::Max,
1687 Function::Min,
1688 Function::Product,
1689 Function::Rand,
1690 Function::Randbetween,
1691 Function::Radians,
1692 Function::Degrees,
1693 Function::Round,
1694 Function::Rounddown,
1695 Function::Roundup,
1696 Function::Sum,
1697 Function::Sumif,
1698 Function::Sumifs,
1699 Function::Sumx2my2,
1700 Function::Sumx2py2,
1701 Function::Sumxmy2,
1702 Function::Address,
1703 Function::Areas,
1704 Function::Choose,
1705 Function::Choosecols,
1706 Function::Chooserows,
1707 Function::Column,
1708 Function::Columns,
1709 Function::Expand,
1710 Function::Index,
1711 Function::Indirect,
1712 Function::Hlookup,
1713 Function::Hstack,
1714 Function::Hyperlink,
1715 Function::Filter,
1716 Function::Lookup,
1717 Function::Match,
1718 Function::Offset,
1719 Function::Row,
1720 Function::Rows,
1721 Function::Sort,
1722 Function::Sortby,
1723 Function::Unique,
1724 Function::Vlookup,
1725 Function::Vstack,
1726 Function::Wrapcols,
1727 Function::Wraprows,
1728 Function::Xlookup,
1729 Function::Xmatch,
1730 Function::Trimrange,
1731 Function::Take,
1732 Function::Drop,
1733 Function::Tocol,
1734 Function::Torow,
1735 Function::Transpose,
1736 Function::Mmult,
1737 Function::Sequence,
1738 Function::Randarray,
1739 Function::Concatenate,
1740 Function::Exact,
1741 Function::Value,
1742 Function::T,
1743 Function::Valuetotext,
1744 Function::Concat,
1745 Function::Find,
1746 Function::Left,
1747 Function::Len,
1748 Function::Lower,
1749 Function::Mid,
1750 Function::Right,
1751 Function::Search,
1752 Function::Text,
1753 Function::Trim,
1754 Function::Unicode,
1755 Function::Unichar,
1756 Function::Char,
1757 Function::Clean,
1758 Function::Code,
1759 Function::Asc,
1760 Function::Arraytotext,
1761 Function::Dollar,
1762 Function::Findb,
1763 Function::Fixed,
1764 Function::Leftb,
1765 Function::Lenb,
1766 Function::Midb,
1767 Function::Numbervalue,
1768 Function::Proper,
1769 Function::Replace,
1770 Function::Replaceb,
1771 Function::Rightb,
1772 Function::Searchb,
1773 Function::Upper,
1774 Function::Isnumber,
1775 Function::Isnontext,
1776 Function::Istext,
1777 Function::Islogical,
1778 Function::Isblank,
1779 Function::Iserr,
1780 Function::Iserror,
1781 Function::Isna,
1782 Function::Na,
1783 Function::Isref,
1784 Function::Isodd,
1785 Function::Iseven,
1786 Function::ErrorType,
1787 Function::Formulatext,
1788 Function::Isformula,
1789 Function::Isomitted,
1790 Function::Type,
1791 Function::Sheet,
1792 Function::Average,
1793 Function::Avedev,
1794 Function::Averagea,
1795 Function::Averageif,
1796 Function::Averageifs,
1797 Function::Count,
1798 Function::Counta,
1799 Function::Countblank,
1800 Function::Countif,
1801 Function::Countifs,
1802 Function::Maxifs,
1803 Function::Minifs,
1804 Function::Geomean,
1805 Function::Year,
1806 Function::Day,
1807 Function::Month,
1808 Function::Eomonth,
1809 Function::Date,
1810 Function::Datedif,
1811 Function::Datevalue,
1812 Function::Edate,
1813 Function::Networkdays,
1814 Function::NetworkdaysIntl,
1815 Function::Time,
1816 Function::Timevalue,
1817 Function::Hour,
1818 Function::Minute,
1819 Function::Second,
1820 Function::Today,
1821 Function::Now,
1822 Function::Days,
1823 Function::Days360,
1824 Function::Weekday,
1825 Function::Weeknum,
1826 Function::Workday,
1827 Function::WorkdayIntl,
1828 Function::Yearfrac,
1829 Function::Isoweeknum,
1830 Function::Pmt,
1831 Function::Pv,
1832 Function::Rate,
1833 Function::Nper,
1834 Function::Fv,
1835 Function::Ppmt,
1836 Function::Ipmt,
1837 Function::Npv,
1838 Function::Mirr,
1839 Function::Irr,
1840 Function::Xirr,
1841 Function::Xnpv,
1842 Function::Rept,
1843 Function::Textafter,
1844 Function::Textbefore,
1845 Function::Textsplit,
1846 Function::Textjoin,
1847 Function::Substitute,
1848 Function::Regexextract,
1849 Function::Regexreplace,
1850 Function::Regextest,
1851 Function::Ispmt,
1852 Function::Rri,
1853 Function::Sln,
1854 Function::Syd,
1855 Function::Nominal,
1856 Function::Effect,
1857 Function::Pduration,
1858 Function::Tbillyield,
1859 Function::Tbillprice,
1860 Function::Tbilleq,
1861 Function::Dollarde,
1862 Function::Dollarfr,
1863 Function::Ddb,
1864 Function::Db,
1865 Function::Cumprinc,
1866 Function::Cumipmt,
1867 Function::Accrint,
1868 Function::Accrintm,
1869 Function::Disc,
1870 Function::Fvschedule,
1871 Function::Intrate,
1872 Function::Pricedisc,
1873 Function::Pricemat,
1874 Function::Received,
1875 Function::Yielddisc,
1876 Function::Yieldmat,
1877 Function::Duration,
1878 Function::Mduration,
1879 Function::Price,
1880 Function::Yield,
1881 Function::Oddfprice,
1882 Function::Oddfyield,
1883 Function::Oddlprice,
1884 Function::Oddlyield,
1885 Function::Coupdaybs,
1886 Function::Coupdays,
1887 Function::Coupdaysnc,
1888 Function::Coupncd,
1889 Function::Coupnum,
1890 Function::Couppcd,
1891 Function::Amordegrc,
1892 Function::Amorlinc,
1893 Function::Vdb,
1894 Function::Besseli,
1895 Function::Besselj,
1896 Function::Besselk,
1897 Function::Bessely,
1898 Function::Erf,
1899 Function::ErfPrecise,
1900 Function::Erfc,
1901 Function::ErfcPrecise,
1902 Function::Bin2dec,
1903 Function::Bin2hex,
1904 Function::Bin2oct,
1905 Function::Dec2Bin,
1906 Function::Dec2hex,
1907 Function::Dec2oct,
1908 Function::Hex2bin,
1909 Function::Hex2dec,
1910 Function::Hex2oct,
1911 Function::Oct2bin,
1912 Function::Oct2dec,
1913 Function::Oct2hex,
1914 Function::Bitand,
1915 Function::Bitlshift,
1916 Function::Bitor,
1917 Function::Bitrshift,
1918 Function::Bitxor,
1919 Function::Complex,
1920 Function::Imabs,
1921 Function::Imaginary,
1922 Function::Imargument,
1923 Function::Imconjugate,
1924 Function::Imcos,
1925 Function::Imcosh,
1926 Function::Imcot,
1927 Function::Imcsc,
1928 Function::Imcsch,
1929 Function::Imdiv,
1930 Function::Imexp,
1931 Function::Imln,
1932 Function::Imlog10,
1933 Function::Imlog2,
1934 Function::Impower,
1935 Function::Improduct,
1936 Function::Imreal,
1937 Function::Imsec,
1938 Function::Imsech,
1939 Function::Imsin,
1940 Function::Imsinh,
1941 Function::Imsqrt,
1942 Function::Imsub,
1943 Function::Imsum,
1944 Function::Imtan,
1945 Function::Convert,
1946 Function::Delta,
1947 Function::Gestep,
1948 Function::Subtotal,
1949 Function::Roman,
1950 Function::Arabic,
1951 Function::Combin,
1952 Function::Combina,
1953 Function::Sumsq,
1954 Function::Mdeterm,
1955 Function::Minverse,
1956 Function::Munit,
1957 Function::Multinomial,
1958 Function::Seriessum,
1959 Function::Sumproduct,
1960 Function::Percentof,
1961 Function::N,
1962 Function::Cell,
1963 Function::Info,
1964 Function::Sheets,
1965 Function::Daverage,
1966 Function::Dcount,
1967 Function::Dget,
1968 Function::Dmax,
1969 Function::Dmin,
1970 Function::Dsum,
1971 Function::Dcounta,
1972 Function::Dproduct,
1973 Function::Dstdev,
1974 Function::Dvar,
1975 Function::Dvarp,
1976 Function::Dstdevp,
1977 Function::BetaDist,
1978 Function::BetaInv,
1979 Function::BinomDist,
1980 Function::BinomDistRange,
1981 Function::BinomInv,
1982 Function::ChisqDist,
1983 Function::ChisqDistRT,
1984 Function::ChisqInv,
1985 Function::ChisqInvRT,
1986 Function::ChisqTest,
1987 Function::ConfidenceNorm,
1988 Function::ConfidenceT,
1989 Function::CovarianceP,
1990 Function::CovarianceS,
1991 Function::Devsq,
1992 Function::ExponDist,
1993 Function::FDist,
1994 Function::FDistRT,
1995 Function::FInv,
1996 Function::FInvRT,
1997 Function::FTest,
1998 Function::Fisher,
1999 Function::FisherInv,
2000 Function::Gamma,
2001 Function::GammaDist,
2002 Function::GammaInv,
2003 Function::GammaLn,
2004 Function::GammaLnPrecise,
2005 Function::HypGeomDist,
2006 Function::LogNormDist,
2007 Function::LogNormInv,
2008 Function::NegbinomDist,
2009 Function::NormDist,
2010 Function::NormInv,
2011 Function::NormSdist,
2012 Function::NormSInv,
2013 Function::Pearson,
2014 Function::Phi,
2015 Function::PoissonDist,
2016 Function::Standardize,
2017 Function::Stdev,
2018 Function::StDevP,
2019 Function::StDevS,
2020 Function::Stdeva,
2021 Function::Stdevpa,
2022 Function::TDist,
2023 Function::TDist2T,
2024 Function::TDistRT,
2025 Function::TInv,
2026 Function::TInv2T,
2027 Function::TTest,
2028 Function::VarP,
2029 Function::VarS,
2030 Function::VarpA,
2031 Function::VarA,
2032 Function::WeibullDist,
2033 Function::ZTest,
2034 Function::BetaDistCompat,
2035 Function::HypGeomDistCompat,
2036 Function::LogNormDistCompat,
2037 Function::NegbinomDistCompat,
2038 Function::NormSDistCompat,
2039 Function::TDistCompat,
2040 Function::BetaInvCompat,
2041 Function::BinomDistCompat,
2042 Function::ChiDistCompat,
2043 Function::ChiInvCompat,
2044 Function::ChiTestCompat,
2045 Function::ConfidenceCompat,
2046 Function::CovarCompat,
2047 Function::CritbinomCompat,
2048 Function::ExponDistCompat,
2049 Function::FDistCompat,
2050 Function::FInvCompat,
2051 Function::FTestCompat,
2052 Function::GammaDistCompat,
2053 Function::GammaInvCompat,
2054 Function::LoginvCompat,
2055 Function::ModeCompat,
2056 Function::NormDistCompat,
2057 Function::NormInvCompat,
2058 Function::NormSInvCompat,
2059 Function::PercentileCompat,
2060 Function::PercentrankCompat,
2061 Function::PoissonCompat,
2062 Function::QuartileCompat,
2063 Function::RankCompat,
2064 Function::StDevPCompat,
2065 Function::TInvCompat,
2066 Function::TTestCompat,
2067 Function::VarCompat,
2068 Function::VarPCompat,
2069 Function::WeibullCompat,
2070 Function::ZTestCompat,
2071 Function::Correl,
2072 Function::Rsq,
2073 Function::Intercept,
2074 Function::Slope,
2075 Function::Steyx,
2076 Function::Forecast,
2077 Function::ForecastLinear,
2078 Function::ForecastEts,
2079 Function::ForecastEtsConfint,
2080 Function::ForecastEtsSeasonality,
2081 Function::ForecastEtsStat,
2082 Function::Frequency,
2083 Function::Growth,
2084 Function::Linest,
2085 Function::Logest,
2086 Function::ModeMult,
2087 Function::ModeSingl,
2088 Function::PercentileExc,
2089 Function::PercentileInc,
2090 Function::PercentrankExc,
2091 Function::PercentrankInc,
2092 Function::Permut,
2093 Function::Permutationa,
2094 Function::Prob,
2095 Function::QuartileExc,
2096 Function::QuartileInc,
2097 Function::Trend,
2098 Function::Trimmean,
2099 Function::Large,
2100 Function::Median,
2101 Function::Small,
2102 Function::RankAvg,
2103 Function::RankEq,
2104 Function::Skew,
2105 Function::SkewP,
2106 Function::Harmean,
2107 Function::Gauss,
2108 Function::Kurt,
2109 Function::MaxA,
2110 Function::MinA,
2111 ]
2112 .into_iter()
2113 }
2114}
2115
2116impl Function {
2117 pub fn to_xlsx_string(&self) -> String {
2121 match self {
2122 Function::Concat => "_xlfn.CONCAT".to_string(),
2123 Function::Ifna => "_xlfn.IFNA".to_string(),
2124 Function::Ifs => "_xlfn.IFS".to_string(),
2125 Function::Lambda => "_xlfn.LAMBDA".to_string(),
2126 Function::Let => "_xlfn.LET".to_string(),
2127 Function::Maxifs => "_xlfn.MAXIFS".to_string(),
2128 Function::Minifs => "_xlfn.MINIFS".to_string(),
2129 Function::Switch => "_xlfn.SWITCH".to_string(),
2130 Function::Filter => "_xlfn._xlws.FILTER".to_string(),
2131 Function::Sort => "_xlfn._xlws.SORT".to_string(),
2132 Function::Sortby => "_xlfn.SORTBY".to_string(),
2133 Function::Unique => "_xlfn.UNIQUE".to_string(),
2134 Function::Xlookup => "_xlfn.XLOOKUP".to_string(),
2135 Function::Xmatch => "_xlfn.XMATCH".to_string(),
2136 Function::Trimrange => "_xlfn.TRIMRANGE".to_string(),
2137 Function::Take => "_xlfn.TAKE".to_string(),
2138 Function::Drop => "_xlfn.DROP".to_string(),
2139 Function::Tocol => "_xlfn.TOCOL".to_string(),
2140 Function::Torow => "_xlfn.TOROW".to_string(),
2141 Function::Choosecols => "_xlfn.CHOOSECOLS".to_string(),
2142 Function::Chooserows => "_xlfn.CHOOSEROWS".to_string(),
2143 Function::Expand => "_xlfn.EXPAND".to_string(),
2144 Function::Hstack => "_xlfn.HSTACK".to_string(),
2145 Function::Vstack => "_xlfn.VSTACK".to_string(),
2146 Function::Wrapcols => "_xlfn.WRAPCOLS".to_string(),
2147 Function::Wraprows => "_xlfn.WRAPROWS".to_string(),
2148 Function::Bycol => "_xlfn.BYCOL".to_string(),
2149 Function::Byrow => "_xlfn.BYROW".to_string(),
2150 Function::Map => "_xlfn.MAP".to_string(),
2151 Function::Reduce => "_xlfn.REDUCE".to_string(),
2152 Function::Scan => "_xlfn.SCAN".to_string(),
2153 Function::Makearray => "_xlfn.MAKEARRAY".to_string(),
2154 Function::Xor => "_xlfn.XOR".to_string(),
2155 Function::Textbefore => "_xlfn.TEXTBEFORE".to_string(),
2156 Function::Textafter => "_xlfn.TEXTAFTER".to_string(),
2157 Function::Textsplit => "_xlfn.TEXTSPLIT".to_string(),
2158 Function::Textjoin => "_xlfn.TEXTJOIN".to_string(),
2159 Function::Sequence => "_xlfn.SEQUENCE".to_string(),
2160 Function::Randarray => "_xlfn.RANDARRAY".to_string(),
2161 Function::Unicode => "_xlfn.UNICODE".to_string(),
2162 Function::Unichar => "_xlfn.UNICHAR".to_string(),
2163 Function::Numbervalue => "_xlfn.NUMBERVALUE".to_string(),
2164 Function::Arraytotext => "_xlfn.ARRAYTOTEXT".to_string(),
2165 Function::Rri => "_xlfn.RRI".to_string(),
2166 Function::Pduration => "_xlfn.PDURATION".to_string(),
2167 Function::Bitand => "_xlfn.BITAND".to_string(),
2168 Function::Bitor => "_xlfn.BITOR".to_string(),
2169 Function::Bitxor => "_xlfn.BITXOR".to_string(),
2170 Function::Bitlshift => "_xlfn.BITLSHIFT".to_string(),
2171 Function::Bitrshift => "_xlfn.BITRSHIFT".to_string(),
2172 Function::Imtan => "_xlfn.IMTAN".to_string(),
2173 Function::Imsinh => "_xlfn.IMSINH".to_string(),
2174 Function::Imcosh => "_xlfn.IMCOSH".to_string(),
2175 Function::Imcot => "_xlfn.IMCOT".to_string(),
2176 Function::Imcsc => "_xlfn.IMCSC".to_string(),
2177 Function::Imcsch => "_xlfn.IMCSCH".to_string(),
2178 Function::Imsec => "_xlfn.IMSEC".to_string(),
2179 Function::ErfcPrecise => "_xlfn.ERFC.PRECISE".to_string(),
2180 Function::ErfPrecise => "_xlfn.ERF.PRECISE".to_string(),
2181 Function::Valuetotext => "_xlfn.VALUETOTEXT".to_string(),
2182 Function::Regexextract => "_xlfn.REGEXEXTRACT".to_string(),
2183 Function::Regexreplace => "_xlfn.REGEXREPLACE".to_string(),
2184 Function::Regextest => "_xlfn.REGEXTEST".to_string(),
2185 Function::Isformula => "_xlfn.ISFORMULA".to_string(),
2186 Function::Isomitted => "_xlfn.ISOMITTED".to_string(),
2187 Function::Sheet => "_xlfn.SHEET".to_string(),
2188 Function::Formulatext => "_xlfn.FORMULATEXT".to_string(),
2189 Function::Isoweeknum => "_xlfn.ISOWEEKNUM".to_string(),
2190 Function::Ceiling => "_xlfn.CEILING".to_string(),
2191 Function::CeilingMath => "_xlfn.CEILING.MATH".to_string(),
2192 Function::CeilingPrecise => "_xlfn.CEILING.PRECISE".to_string(),
2193 Function::FloorMath => "_xlfn.FLOOR.MATH".to_string(),
2194 Function::FloorPrecise => "_xlfn.FLOOR.PRECISE".to_string(),
2195 Function::IsoCeiling => "_xlfn.ISO.CEILING".to_string(),
2196 Function::Base => "_xlfn.BASE".to_string(),
2197 Function::Decimal => "_xlfn.DECIMAL".to_string(),
2198 Function::Arabic => "_xlfn.ARABIC".to_string(),
2199 Function::Combina => "_xlfn.COMBINA".to_string(),
2200 Function::Sheets => "_xlfn.SHEETS".to_string(),
2201 Function::Acoth => "_xlfn.ACOTH".to_string(),
2202 Function::Cot => "_xlfn.COT".to_string(),
2203 Function::Coth => "_xlfn.COTH".to_string(),
2204 Function::Csc => "_xlfn.CSC".to_string(),
2205 Function::Csch => "_xlfn.CSCH".to_string(),
2206 Function::Sec => "_xlfn.SEC".to_string(),
2207 Function::Sech => "_xlfn.SECH".to_string(),
2208 Function::Acot => "_xlfn.ACOT".to_string(),
2209 Function::GammaLnPrecise => "_xlfn.GAMMALN.PRECISE".to_string(),
2210 Function::Gamma => "_xlfn.GAMMA".to_string(),
2211 Function::GammaInv => "_xlfn.GAMMA.INV".to_string(),
2212 Function::GammaLn => "_xlfn.GAMMALN".to_string(),
2213 Function::BetaDist => "_xlfn.BETA.DIST".to_string(),
2214 Function::BetaInv => "_xlfn.BETA.INV".to_string(),
2215
2216 Function::BinomDist => "_xlfn.BINOM.DIST".to_string(),
2217 Function::BinomDistRange => "_xlfn.BINOM.DIST.RANGE".to_string(),
2218 Function::BinomInv => "_xlfn.BINOM.INV".to_string(),
2219 Function::NegbinomDist => "_xlfn.NEGBINOM.DIST".to_string(),
2220
2221 Function::ChisqDist => "_xlfn.CHISQ.DIST".to_string(),
2222 Function::ChisqDistRT => "_xlfn.CHISQ.DIST.RT".to_string(),
2223 Function::ChisqInv => "_xlfn.CHISQ.INV".to_string(),
2224 Function::ChisqInvRT => "_xlfn.CHISQ.INV.RT".to_string(),
2225 Function::ChisqTest => "_xlfn.CHISQ.TEST".to_string(),
2226
2227 Function::ConfidenceNorm => "_xlfn.CONFIDENCE.NORM".to_string(),
2228 Function::ConfidenceT => "_xlfn.CONFIDENCE.T".to_string(),
2229
2230 Function::CovarianceP => "_xlfn.COVARIANCE.P".to_string(),
2231 Function::CovarianceS => "_xlfn.COVARIANCE.S".to_string(),
2232
2233 Function::ExponDist => "_xlfn.EXPON.DIST".to_string(),
2234
2235 Function::FDist => "_xlfn.F.DIST".to_string(),
2236 Function::FDistRT => "_xlfn.F.DIST.RT".to_string(),
2237 Function::FInv => "_xlfn.F.INV".to_string(),
2238 Function::FInvRT => "_xlfn.F.INV.RT".to_string(),
2239 Function::FTest => "_xlfn.F.TEST".to_string(),
2240
2241 Function::HypGeomDist => "_xlfn.HYPGEOM.DIST".to_string(),
2242
2243 Function::LogNormDist => "_xlfn.LOGNORM.DIST".to_string(),
2244 Function::LogNormInv => "_xlfn.LOGNORM.INV".to_string(),
2245
2246 Function::NormDist => "_xlfn.NORM.DIST".to_string(),
2247 Function::NormInv => "_xlfn.NORM.INV".to_string(),
2248 Function::NormSdist => "_xlfn.NORM.S.DIST".to_string(),
2249 Function::NormSInv => "_xlfn.NORM.S.INV".to_string(),
2250
2251 Function::Phi => "_xlfn.PHI".to_string(),
2252
2253 Function::PoissonDist => "_xlfn.POISSON.DIST".to_string(),
2254
2255 Function::StDevP => "_xlfn.STDEV.P".to_string(),
2256 Function::StDevS => "_xlfn.STDEV.S".to_string(),
2257
2258 Function::TDist => "_xlfn.T.DIST".to_string(),
2259 Function::TDist2T => "_xlfn.T.DIST.2T".to_string(),
2260 Function::TDistRT => "_xlfn.T.DIST.RT".to_string(),
2261 Function::TInv => "_xlfn.T.INV".to_string(),
2262 Function::TInv2T => "_xlfn.T.INV.2T".to_string(),
2263 Function::TTest => "_xlfn.T.TEST".to_string(),
2264
2265 Function::VarP => "_xlfn.VAR.P".to_string(),
2266 Function::VarS => "_xlfn.VAR.S".to_string(),
2267
2268 Function::WeibullDist => "_xlfn.WEIBULL.DIST".to_string(),
2269 Function::ZTest => "_xlfn.Z.TEST".to_string(),
2270 Function::SkewP => "_xlfn.SKEW.P".to_string(),
2271 Function::RankAvg => "_xlfn.RANK.AVG".to_string(),
2272 Function::RankEq => "_xlfn.RANK.EQ".to_string(),
2273 Function::Munit => "_xlfn.MUNIT".to_string(),
2274
2275 Function::ModeMult => "_xlfn.MODE.MULT".to_string(),
2276 Function::ModeSingl => "_xlfn.MODE.SNGL".to_string(),
2277 Function::PercentileExc => "_xlfn.PERCENTILE.EXC".to_string(),
2278 Function::PercentileInc => "_xlfn.PERCENTILE.INC".to_string(),
2279 Function::PercentrankExc => "_xlfn.PERCENTRANK.EXC".to_string(),
2280 Function::PercentrankInc => "_xlfn.PERCENTRANK.INC".to_string(),
2281 Function::Permutationa => "_xlfn.PERMUTATIONA".to_string(),
2282 Function::QuartileExc => "_xlfn.QUARTILE.EXC".to_string(),
2283 Function::QuartileInc => "_xlfn.QUARTILE.INC".to_string(),
2284
2285 Function::ForecastEts => "_xlfn.FORECAST.ETS".to_string(),
2286 Function::ForecastEtsConfint => "_xlfn.FORECAST.ETS.CONFINT".to_string(),
2287 Function::ForecastEtsSeasonality => "_xlfn.FORECAST.ETS.SEASONALITY".to_string(),
2288 Function::ForecastEtsStat => "_xlfn.FORECAST.ETS.STAT".to_string(),
2289
2290 _ => {
2291 let language = get_default_language();
2292 self.to_localized_name(language)
2293 }
2294 }
2295 }
2296
2297 pub(crate) fn returns_reference(&self) -> bool {
2298 matches!(self, Function::Indirect | Function::Offset)
2299 }
2300}
2301
2302impl<'a> Model<'a> {
2303 pub(crate) fn evaluate_function(
2304 &mut self,
2305 kind: &Function,
2306 args: &[Node],
2307 cell: CellReferenceIndex,
2308 ) -> CalcResult {
2309 match kind {
2310 Function::And => self.fn_and(args, cell),
2311 Function::False => self.fn_false(args, cell),
2312 Function::If => self.fn_if(args, cell),
2313 Function::Iferror => self.fn_iferror(args, cell),
2314 Function::Ifna => self.fn_ifna(args, cell),
2315 Function::Ifs => self.fn_ifs(args, cell),
2316 Function::Lambda => self.fn_lambda(args, cell),
2317 Function::Let => self.fn_let(args, cell),
2318 Function::Not => self.fn_not(args, cell),
2319 Function::Or => self.fn_or(args, cell),
2320 Function::Switch => self.fn_switch(args, cell),
2321 Function::True => self.fn_true(args, cell),
2322 Function::Xor => self.fn_xor(args, cell),
2323 Function::Bycol => self.fn_bycol(args, cell),
2324 Function::Byrow => self.fn_byrow(args, cell),
2325 Function::Map => self.fn_map(args, cell),
2326 Function::Reduce => self.fn_reduce(args, cell),
2327 Function::Scan => self.fn_scan(args, cell),
2328 Function::Makearray => self.fn_makearray(args, cell),
2329 Function::Log => self.fn_log(args, cell),
2330 Function::Log10 => self.fn_log10(args, cell),
2331 Function::Ln => self.fn_ln(args, cell),
2332 Function::Sin => self.fn_sin(args, cell),
2333 Function::Cos => self.fn_cos(args, cell),
2334 Function::Tan => self.fn_tan(args, cell),
2335 Function::Asin => self.fn_asin(args, cell),
2336 Function::Acos => self.fn_acos(args, cell),
2337 Function::Atan => self.fn_atan(args, cell),
2338 Function::Sinh => self.fn_sinh(args, cell),
2339 Function::Cosh => self.fn_cosh(args, cell),
2340 Function::Tanh => self.fn_tanh(args, cell),
2341 Function::Asinh => self.fn_asinh(args, cell),
2342 Function::Acosh => self.fn_acosh(args, cell),
2343 Function::Atanh => self.fn_atanh(args, cell),
2344 Function::Pi => self.fn_pi(args, cell),
2345 Function::Abs => self.fn_abs(args, cell),
2346 Function::Sqrt => self.fn_sqrt(args, cell),
2347 Function::Sqrtpi => self.fn_sqrtpi(args, cell),
2348 Function::Atan2 => self.fn_atan2(args, cell),
2349 Function::Power => self.fn_power(args, cell),
2350 Function::Max => self.fn_max(args, cell),
2351 Function::Min => self.fn_min(args, cell),
2352 Function::Product => self.fn_product(args, cell),
2353 Function::Rand => self.fn_rand(args, cell),
2354 Function::Randbetween => self.fn_randbetween(args, cell),
2355 Function::Round => self.fn_round(args, cell),
2356 Function::Rounddown => self.fn_rounddown(args, cell),
2357 Function::Roundup => self.fn_roundup(args, cell),
2358 Function::Sum => self.fn_sum(args, cell),
2359 Function::Sumif => self.fn_sumif(args, cell),
2360 Function::Sumifs => self.fn_sumifs(args, cell),
2361 Function::Choose => self.fn_choose(args, cell),
2362 Function::Column => self.fn_column(args, cell),
2363 Function::Address => self.fn_address(args, cell),
2364 Function::Areas => self.fn_areas(args, cell),
2365 Function::Columns => self.fn_columns(args, cell),
2366 Function::Choosecols => self.fn_choosecols(args, cell),
2367 Function::Chooserows => self.fn_chooserows(args, cell),
2368 Function::Expand => self.fn_expand(args, cell),
2369 Function::Index => self.fn_index(args, cell),
2370 Function::Indirect => self.fn_indirect(args, cell),
2371 Function::Hlookup => self.fn_hlookup(args, cell),
2372 Function::Hstack => self.fn_hstack(args, cell),
2373 Function::Hyperlink => self.fn_hyperlink(args, cell),
2374 Function::Lookup => self.fn_lookup(args, cell),
2375 Function::Match => self.fn_match(args, cell),
2376 Function::Offset => self.fn_offset(args, cell),
2377 Function::Row => self.fn_row(args, cell),
2378 Function::Rows => self.fn_rows(args, cell),
2379 Function::Filter => self.fn_filter(args, cell),
2380 Function::Sort => self.fn_sort(args, cell),
2381 Function::Sortby => self.fn_sortby(args, cell),
2382 Function::Unique => self.fn_unique(args, cell),
2383 Function::Vlookup => self.fn_vlookup(args, cell),
2384 Function::Vstack => self.fn_vstack(args, cell),
2385 Function::Wrapcols => self.fn_wrapcols(args, cell),
2386 Function::Wraprows => self.fn_wraprows(args, cell),
2387 Function::Xlookup => self.fn_xlookup(args, cell),
2388 Function::Xmatch => self.fn_xmatch(args, cell),
2389 Function::Trimrange => self.fn_trimrange(args, cell),
2390 Function::Take => self.fn_take(args, cell),
2391 Function::Drop => self.fn_drop(args, cell),
2392 Function::Tocol => self.fn_tocol(args, cell),
2393 Function::Torow => self.fn_torow(args, cell),
2394 Function::Transpose => self.fn_transpose(args, cell),
2395 Function::Mmult => self.fn_mmult(args, cell),
2396 Function::Sequence => self.fn_sequence(args, cell),
2397 Function::Randarray => self.fn_randarray(args, cell),
2398 Function::Concatenate => self.fn_concatenate(args, cell),
2399 Function::Exact => self.fn_exact(args, cell),
2400 Function::Value => self.fn_value(args, cell),
2401 Function::T => self.fn_t(args, cell),
2402 Function::Valuetotext => self.fn_valuetotext(args, cell),
2403 Function::Concat => self.fn_concat(args, cell),
2404 Function::Find => self.fn_find(args, cell),
2405 Function::Left => self.fn_left(args, cell),
2406 Function::Len => self.fn_len(args, cell),
2407 Function::Lower => self.fn_lower(args, cell),
2408 Function::Mid => self.fn_mid(args, cell),
2409 Function::Right => self.fn_right(args, cell),
2410 Function::Search => self.fn_search(args, cell),
2411 Function::Text => self.fn_text(args, cell),
2412 Function::Trim => self.fn_trim(args, cell),
2413 Function::Unicode => self.fn_unicode(args, cell),
2414 Function::Unichar => self.fn_unichar(args, cell),
2415 Function::Char => self.fn_char(args, cell),
2416 Function::Clean => self.fn_clean(args, cell),
2417 Function::Code => self.fn_code(args, cell),
2418 Function::Asc => self.fn_asc(args, cell),
2419 Function::Arraytotext => self.fn_arraytotext(args, cell),
2420 Function::Dollar => self.fn_dollar(args, cell),
2421 Function::Findb => self.fn_findb(args, cell),
2422 Function::Fixed => self.fn_fixed(args, cell),
2423 Function::Leftb => self.fn_leftb(args, cell),
2424 Function::Lenb => self.fn_lenb(args, cell),
2425 Function::Midb => self.fn_midb(args, cell),
2426 Function::Numbervalue => self.fn_numbervalue(args, cell),
2427 Function::Proper => self.fn_proper(args, cell),
2428 Function::Replace => self.fn_replace(args, cell),
2429 Function::Replaceb => self.fn_replaceb(args, cell),
2430 Function::Rightb => self.fn_rightb(args, cell),
2431 Function::Searchb => self.fn_searchb(args, cell),
2432 Function::Upper => self.fn_upper(args, cell),
2433 Function::Isnumber => self.fn_isnumber(args, cell),
2434 Function::Isnontext => self.fn_isnontext(args, cell),
2435 Function::Istext => self.fn_istext(args, cell),
2436 Function::Islogical => self.fn_islogical(args, cell),
2437 Function::Isblank => self.fn_isblank(args, cell),
2438 Function::Iserr => self.fn_iserr(args, cell),
2439 Function::Iserror => self.fn_iserror(args, cell),
2440 Function::Isna => self.fn_isna(args, cell),
2441 Function::Na => CalcResult::new_error(Error::NA, cell, "".to_string()),
2442 Function::Isref => self.fn_isref(args, cell),
2443 Function::Isodd => self.fn_isodd(args, cell),
2444 Function::Isomitted => self.fn_isomitted(args, cell),
2445 Function::Iseven => self.fn_iseven(args, cell),
2446 Function::ErrorType => self.fn_errortype(args, cell),
2447 Function::Formulatext => self.fn_formulatext(args, cell),
2448 Function::Isformula => self.fn_isformula(args, cell),
2449 Function::Type => self.fn_type(args, cell),
2450 Function::Sheet => self.fn_sheet(args, cell),
2451 Function::Average => self.fn_average(args, cell),
2452 Function::Averagea => self.fn_averagea(args, cell),
2453 Function::Avedev => self.fn_avedev(args, cell),
2454 Function::Averageif => self.fn_averageif(args, cell),
2455 Function::Averageifs => self.fn_averageifs(args, cell),
2456 Function::Count => self.fn_count(args, cell),
2457 Function::Counta => self.fn_counta(args, cell),
2458 Function::Countblank => self.fn_countblank(args, cell),
2459 Function::Countif => self.fn_countif(args, cell),
2460 Function::Countifs => self.fn_countifs(args, cell),
2461 Function::Maxifs => self.fn_maxifs(args, cell),
2462 Function::Minifs => self.fn_minifs(args, cell),
2463 Function::Geomean => self.fn_geomean(args, cell),
2464 Function::Year => self.fn_year(args, cell),
2465 Function::Day => self.fn_day(args, cell),
2466 Function::Eomonth => self.fn_eomonth(args, cell),
2467 Function::Month => self.fn_month(args, cell),
2468 Function::Date => self.fn_date(args, cell),
2469 Function::Datedif => self.fn_datedif(args, cell),
2470 Function::Datevalue => self.fn_datevalue(args, cell),
2471 Function::Edate => self.fn_edate(args, cell),
2472 Function::Networkdays => self.fn_networkdays(args, cell),
2473 Function::NetworkdaysIntl => self.fn_networkdays_intl(args, cell),
2474 Function::Time => self.fn_time(args, cell),
2475 Function::Timevalue => self.fn_timevalue(args, cell),
2476 Function::Hour => self.fn_hour(args, cell),
2477 Function::Minute => self.fn_minute(args, cell),
2478 Function::Second => self.fn_second(args, cell),
2479 Function::Today => self.fn_today(args, cell),
2480 Function::Now => self.fn_now(args, cell),
2481 Function::Days => self.fn_days(args, cell),
2482 Function::Days360 => self.fn_days360(args, cell),
2483 Function::Weekday => self.fn_weekday(args, cell),
2484 Function::Weeknum => self.fn_weeknum(args, cell),
2485 Function::Workday => self.fn_workday(args, cell),
2486 Function::WorkdayIntl => self.fn_workday_intl(args, cell),
2487 Function::Yearfrac => self.fn_yearfrac(args, cell),
2488 Function::Isoweeknum => self.fn_isoweeknum(args, cell),
2489 Function::Pmt => self.fn_pmt(args, cell),
2490 Function::Pv => self.fn_pv(args, cell),
2491 Function::Rate => self.fn_rate(args, cell),
2492 Function::Nper => self.fn_nper(args, cell),
2493 Function::Fv => self.fn_fv(args, cell),
2494 Function::Ppmt => self.fn_ppmt(args, cell),
2495 Function::Ipmt => self.fn_ipmt(args, cell),
2496 Function::Npv => self.fn_npv(args, cell),
2497 Function::Mirr => self.fn_mirr(args, cell),
2498 Function::Irr => self.fn_irr(args, cell),
2499 Function::Xirr => self.fn_xirr(args, cell),
2500 Function::Xnpv => self.fn_xnpv(args, cell),
2501 Function::Rept => self.fn_rept(args, cell),
2502 Function::Textafter => self.fn_textafter(args, cell),
2503 Function::Textbefore => self.fn_textbefore(args, cell),
2504 Function::Textsplit => self.fn_textsplit(args, cell),
2505 Function::Textjoin => self.fn_textjoin(args, cell),
2506 Function::Substitute => self.fn_substitute(args, cell),
2507 Function::Regexextract => self.fn_regexextract(args, cell),
2508 Function::Regexreplace => self.fn_regexreplace(args, cell),
2509 Function::Regextest => self.fn_regextest(args, cell),
2510 Function::Ispmt => self.fn_ispmt(args, cell),
2511 Function::Rri => self.fn_rri(args, cell),
2512 Function::Sln => self.fn_sln(args, cell),
2513 Function::Syd => self.fn_syd(args, cell),
2514 Function::Nominal => self.fn_nominal(args, cell),
2515 Function::Effect => self.fn_effect(args, cell),
2516 Function::Pduration => self.fn_pduration(args, cell),
2517 Function::Tbillyield => self.fn_tbillyield(args, cell),
2518 Function::Tbillprice => self.fn_tbillprice(args, cell),
2519 Function::Tbilleq => self.fn_tbilleq(args, cell),
2520 Function::Dollarde => self.fn_dollarde(args, cell),
2521 Function::Dollarfr => self.fn_dollarfr(args, cell),
2522 Function::Ddb => self.fn_ddb(args, cell),
2523 Function::Db => self.fn_db(args, cell),
2524 Function::Cumprinc => self.fn_cumprinc(args, cell),
2525 Function::Cumipmt => self.fn_cumipmt(args, cell),
2526 Function::Accrint => self.fn_accrint(args, cell),
2527 Function::Accrintm => self.fn_accrintm(args, cell),
2528 Function::Disc => self.fn_disc(args, cell),
2529 Function::Fvschedule => self.fn_fvschedule(args, cell),
2530 Function::Intrate => self.fn_intrate(args, cell),
2531 Function::Pricedisc => self.fn_pricedisc(args, cell),
2532 Function::Pricemat => self.fn_pricemat(args, cell),
2533 Function::Received => self.fn_received(args, cell),
2534 Function::Yielddisc => self.fn_yielddisc(args, cell),
2535 Function::Yieldmat => self.fn_yieldmat(args, cell),
2536 Function::Duration => self.fn_duration(args, cell),
2537 Function::Mduration => self.fn_mduration(args, cell),
2538 Function::Price => self.fn_price(args, cell),
2539 Function::Yield => self.fn_yield(args, cell),
2540 Function::Oddfprice => self.fn_oddfprice(args, cell),
2541 Function::Oddfyield => self.fn_oddfyield(args, cell),
2542 Function::Oddlprice => self.fn_oddlprice(args, cell),
2543 Function::Oddlyield => self.fn_oddlyield(args, cell),
2544 Function::Coupdaybs => self.fn_coupdaybs(args, cell),
2545 Function::Coupdays => self.fn_coupdays(args, cell),
2546 Function::Coupdaysnc => self.fn_coupdaysnc(args, cell),
2547 Function::Coupncd => self.fn_coupncd(args, cell),
2548 Function::Coupnum => self.fn_coupnum(args, cell),
2549 Function::Couppcd => self.fn_couppcd(args, cell),
2550 Function::Amordegrc => self.fn_amordegrc(args, cell),
2551 Function::Amorlinc => self.fn_amorlinc(args, cell),
2552 Function::Vdb => self.fn_vdb(args, cell),
2553 Function::Besseli => self.fn_besseli(args, cell),
2554 Function::Besselj => self.fn_besselj(args, cell),
2555 Function::Besselk => self.fn_besselk(args, cell),
2556 Function::Bessely => self.fn_bessely(args, cell),
2557 Function::Erf => self.fn_erf(args, cell),
2558 Function::ErfPrecise => self.fn_erfprecise(args, cell),
2559 Function::Erfc => self.fn_erfc(args, cell),
2560 Function::ErfcPrecise => self.fn_erfcprecise(args, cell),
2561 Function::Bin2dec => self.fn_bin2dec(args, cell),
2562 Function::Bin2hex => self.fn_bin2hex(args, cell),
2563 Function::Bin2oct => self.fn_bin2oct(args, cell),
2564 Function::Dec2Bin => self.fn_dec2bin(args, cell),
2565 Function::Dec2hex => self.fn_dec2hex(args, cell),
2566 Function::Dec2oct => self.fn_dec2oct(args, cell),
2567 Function::Hex2bin => self.fn_hex2bin(args, cell),
2568 Function::Hex2dec => self.fn_hex2dec(args, cell),
2569 Function::Hex2oct => self.fn_hex2oct(args, cell),
2570 Function::Oct2bin => self.fn_oct2bin(args, cell),
2571 Function::Oct2dec => self.fn_oct2dec(args, cell),
2572 Function::Oct2hex => self.fn_oct2hex(args, cell),
2573 Function::Bitand => self.fn_bitand(args, cell),
2574 Function::Bitlshift => self.fn_bitlshift(args, cell),
2575 Function::Bitor => self.fn_bitor(args, cell),
2576 Function::Bitrshift => self.fn_bitrshift(args, cell),
2577 Function::Bitxor => self.fn_bitxor(args, cell),
2578 Function::Complex => self.fn_complex(args, cell),
2579 Function::Imabs => self.fn_imabs(args, cell),
2580 Function::Imaginary => self.fn_imaginary(args, cell),
2581 Function::Imargument => self.fn_imargument(args, cell),
2582 Function::Imconjugate => self.fn_imconjugate(args, cell),
2583 Function::Imcos => self.fn_imcos(args, cell),
2584 Function::Imcosh => self.fn_imcosh(args, cell),
2585 Function::Imcot => self.fn_imcot(args, cell),
2586 Function::Imcsc => self.fn_imcsc(args, cell),
2587 Function::Imcsch => self.fn_imcsch(args, cell),
2588 Function::Imdiv => self.fn_imdiv(args, cell),
2589 Function::Imexp => self.fn_imexp(args, cell),
2590 Function::Imln => self.fn_imln(args, cell),
2591 Function::Imlog10 => self.fn_imlog10(args, cell),
2592 Function::Imlog2 => self.fn_imlog2(args, cell),
2593 Function::Impower => self.fn_impower(args, cell),
2594 Function::Improduct => self.fn_improduct(args, cell),
2595 Function::Imreal => self.fn_imreal(args, cell),
2596 Function::Imsec => self.fn_imsec(args, cell),
2597 Function::Imsech => self.fn_imsech(args, cell),
2598 Function::Imsin => self.fn_imsin(args, cell),
2599 Function::Imsinh => self.fn_imsinh(args, cell),
2600 Function::Imsqrt => self.fn_imsqrt(args, cell),
2601 Function::Imsub => self.fn_imsub(args, cell),
2602 Function::Imsum => self.fn_imsum(args, cell),
2603 Function::Imtan => self.fn_imtan(args, cell),
2604 Function::Convert => self.fn_convert(args, cell),
2605 Function::Delta => self.fn_delta(args, cell),
2606 Function::Gestep => self.fn_gestep(args, cell),
2607 Function::Subtotal => self.fn_subtotal(args, cell),
2608 Function::Acot => self.fn_acot(args, cell),
2609 Function::Acoth => self.fn_acoth(args, cell),
2610 Function::Cot => self.fn_cot(args, cell),
2611 Function::Coth => self.fn_coth(args, cell),
2612 Function::Csc => self.fn_csc(args, cell),
2613 Function::Csch => self.fn_csch(args, cell),
2614 Function::Sec => self.fn_sec(args, cell),
2615 Function::Sech => self.fn_sech(args, cell),
2616 Function::Exp => self.fn_exp(args, cell),
2617 Function::Fact => self.fn_fact(args, cell),
2618 Function::Factdouble => self.fn_factdouble(args, cell),
2619 Function::Sign => self.fn_sign(args, cell),
2620 Function::Radians => self.fn_radians(args, cell),
2621 Function::Degrees => self.fn_degrees(args, cell),
2622 Function::Int => self.fn_int(args, cell),
2623 Function::Even => self.fn_even(args, cell),
2624 Function::Odd => self.fn_odd(args, cell),
2625 Function::Ceiling => self.fn_ceiling(args, cell),
2626 Function::CeilingMath => self.fn_ceiling_math(args, cell),
2627 Function::CeilingPrecise => self.fn_ceiling_precise(args, cell),
2628 Function::Floor => self.fn_floor(args, cell),
2629 Function::FloorMath => self.fn_floor_math(args, cell),
2630 Function::FloorPrecise => self.fn_floor_precise(args, cell),
2631 Function::IsoCeiling => self.fn_iso_ceiling(args, cell),
2632 Function::Mod => self.fn_mod(args, cell),
2633 Function::Quotient => self.fn_quotient(args, cell),
2634 Function::Mround => self.fn_mround(args, cell),
2635 Function::Trunc => self.fn_trunc(args, cell),
2636 Function::Gcd => self.fn_gcd(args, cell),
2637 Function::Lcm => self.fn_lcm(args, cell),
2638 Function::Base => self.fn_base(args, cell),
2639 Function::Decimal => self.fn_decimal(args, cell),
2640 Function::Roman => self.fn_roman(args, cell),
2641 Function::Arabic => self.fn_arabic(args, cell),
2642 Function::Combin => self.fn_combin(args, cell),
2643 Function::Combina => self.fn_combina(args, cell),
2644 Function::Sumsq => self.fn_sumsq(args, cell),
2645 Function::Mdeterm => self.fn_mdeterm(args, cell),
2646 Function::Minverse => self.fn_minverse(args, cell),
2647 Function::Munit => self.fn_munit(args, cell),
2648 Function::Multinomial => self.fn_multinomial(args, cell),
2649 Function::Seriessum => self.fn_seriessum(args, cell),
2650 Function::Sumproduct => self.fn_sumproduct(args, cell),
2651 Function::Percentof => self.fn_percentof(args, cell),
2652 Function::N => self.fn_n(args, cell),
2653 Function::Cell => self.fn_cell(args, cell),
2654 Function::Info => self.fn_info(args, cell),
2655 Function::Sheets => self.fn_sheets(args, cell),
2656 Function::Daverage => self.fn_daverage(args, cell),
2657 Function::Dcount => self.fn_dcount(args, cell),
2658 Function::Dget => self.fn_dget(args, cell),
2659 Function::Dmax => self.fn_dmax(args, cell),
2660 Function::Dmin => self.fn_dmin(args, cell),
2661 Function::Dsum => self.fn_dsum(args, cell),
2662 Function::Dcounta => self.fn_dcounta(args, cell),
2663 Function::Dproduct => self.fn_dproduct(args, cell),
2664 Function::Dstdev => self.fn_dstdev(args, cell),
2665 Function::Dvar => self.fn_dvar(args, cell),
2666 Function::Dvarp => self.fn_dvarp(args, cell),
2667 Function::Dstdevp => self.fn_dstdevp(args, cell),
2668 Function::BetaDist => self.fn_beta_dist(args, cell),
2669 Function::BetaInv => self.fn_beta_inv(args, cell),
2670 Function::BinomDist => self.fn_binom_dist(args, cell),
2671 Function::BinomDistRange => self.fn_binom_dist_range(args, cell),
2672 Function::BinomInv => self.fn_binom_inv(args, cell),
2673 Function::ChisqDist => self.fn_chisq_dist(args, cell),
2674 Function::ChisqDistRT => self.fn_chisq_dist_rt(args, cell),
2675 Function::ChisqInv => self.fn_chisq_inv(args, cell),
2676 Function::ChisqInvRT => self.fn_chisq_inv_rt(args, cell),
2677 Function::ChisqTest => self.fn_chisq_test(args, cell),
2678 Function::ConfidenceNorm => self.fn_confidence_norm(args, cell),
2679 Function::ConfidenceT => self.fn_confidence_t(args, cell),
2680 Function::CovarianceP => self.fn_covariance_p(args, cell),
2681 Function::CovarianceS => self.fn_covariance_s(args, cell),
2682 Function::Devsq => self.fn_devsq(args, cell),
2683 Function::ExponDist => self.fn_expon_dist(args, cell),
2684 Function::FDist => self.fn_f_dist(args, cell),
2685 Function::FDistRT => self.fn_f_dist_rt(args, cell),
2686 Function::FInv => self.fn_f_inv(args, cell),
2687 Function::FInvRT => self.fn_f_inv_rt(args, cell),
2688 Function::Fisher => self.fn_fisher(args, cell),
2689 Function::FisherInv => self.fn_fisher_inv(args, cell),
2690 Function::FTest => self.fn_f_test(args, cell),
2691 Function::Gamma => self.fn_gamma(args, cell),
2692 Function::GammaDist => self.fn_gamma_dist(args, cell),
2693 Function::GammaInv => self.fn_gamma_inv(args, cell),
2694 Function::GammaLn => self.fn_gamma_ln(args, cell),
2695 Function::GammaLnPrecise => self.fn_gamma_ln_precise(args, cell),
2696 Function::HypGeomDist => self.fn_hyp_geom_dist(args, cell),
2697 Function::LogNormDist => self.fn_log_norm_dist(args, cell),
2698 Function::LogNormInv => self.fn_log_norm_inv(args, cell),
2699 Function::NegbinomDist => self.fn_negbinom_dist(args, cell),
2700 Function::NormDist => self.fn_norm_dist(args, cell),
2701 Function::NormInv => self.fn_norm_inv(args, cell),
2702 Function::NormSdist => self.fn_norm_s_dist(args, cell),
2703 Function::NormSInv => self.fn_norm_s_inv(args, cell),
2704 Function::Pearson => self.fn_pearson(args, cell),
2705 Function::Phi => self.fn_phi(args, cell),
2706 Function::PoissonDist => self.fn_poisson_dist(args, cell),
2707 Function::Standardize => self.fn_standardize(args, cell),
2708 Function::Stdev => self.fn_stdev_s(args, cell),
2709 Function::StDevP => self.fn_stdev_p(args, cell),
2710 Function::StDevS => self.fn_stdev_s(args, cell),
2711 Function::Stdeva => self.fn_stdeva(args, cell),
2712 Function::Stdevpa => self.fn_stdevpa(args, cell),
2713 Function::TDist => self.fn_t_dist(args, cell),
2714 Function::TDist2T => self.fn_t_dist_2t(args, cell),
2715 Function::TDistRT => self.fn_t_dist_rt(args, cell),
2716 Function::TInv => self.fn_t_inv(args, cell),
2717 Function::TInv2T => self.fn_t_inv_2t(args, cell),
2718 Function::TTest => self.fn_t_test(args, cell),
2719 Function::VarP => self.fn_var_p(args, cell),
2720 Function::VarS => self.fn_var_s(args, cell),
2721 Function::VarpA => self.fn_varpa(args, cell),
2722 Function::VarA => self.fn_vara(args, cell),
2723 Function::WeibullDist => self.fn_weibull_dist(args, cell),
2724 Function::ZTest => self.fn_z_test(args, cell),
2725 Function::BetaDistCompat => self.fn_betadist_compat(args, cell),
2726 Function::HypGeomDistCompat => self.fn_hypgeomdist_compat(args, cell),
2727 Function::LogNormDistCompat => self.fn_lognormdist_compat(args, cell),
2728 Function::NegbinomDistCompat => self.fn_negbinomdist_compat(args, cell),
2729 Function::NormSDistCompat => self.fn_normsdist_compat(args, cell),
2730 Function::TDistCompat => self.fn_tdist_compat(args, cell),
2731 Function::BetaInvCompat => self.fn_beta_inv(args, cell),
2732 Function::BinomDistCompat => self.fn_binom_dist(args, cell),
2733 Function::ChiDistCompat => self.fn_chisq_dist_rt(args, cell),
2734 Function::ChiInvCompat => self.fn_chisq_inv_rt(args, cell),
2735 Function::ChiTestCompat => self.fn_chisq_test(args, cell),
2736 Function::ConfidenceCompat => self.fn_confidence_norm(args, cell),
2737 Function::CovarCompat => self.fn_covariance_p(args, cell),
2738 Function::CritbinomCompat => self.fn_binom_inv(args, cell),
2739 Function::ExponDistCompat => self.fn_expon_dist(args, cell),
2740 Function::FDistCompat => self.fn_f_dist_rt(args, cell),
2741 Function::FInvCompat => self.fn_f_inv_rt(args, cell),
2742 Function::FTestCompat => self.fn_f_test(args, cell),
2743 Function::GammaDistCompat => self.fn_gamma_dist(args, cell),
2744 Function::GammaInvCompat => self.fn_gamma_inv(args, cell),
2745 Function::LoginvCompat => self.fn_log_norm_inv(args, cell),
2746 Function::ModeCompat => self.fn_mode_sngl(args, cell),
2747 Function::NormDistCompat => self.fn_norm_dist(args, cell),
2748 Function::NormInvCompat => self.fn_norm_inv(args, cell),
2749 Function::NormSInvCompat => self.fn_norm_s_inv(args, cell),
2750 Function::PercentileCompat => self.fn_percentile_inc(args, cell),
2751 Function::PercentrankCompat => self.fn_percentrank_inc(args, cell),
2752 Function::PoissonCompat => self.fn_poisson_dist(args, cell),
2753 Function::QuartileCompat => self.fn_quartile_inc(args, cell),
2754 Function::RankCompat => self.fn_rank_eq(args, cell),
2755 Function::StDevPCompat => self.fn_stdev_p(args, cell),
2756 Function::TInvCompat => self.fn_t_inv_2t(args, cell),
2757 Function::TTestCompat => self.fn_t_test(args, cell),
2758 Function::VarCompat => self.fn_var_s(args, cell),
2759 Function::VarPCompat => self.fn_var_p(args, cell),
2760 Function::WeibullCompat => self.fn_weibull_dist(args, cell),
2761 Function::ZTestCompat => self.fn_z_test(args, cell),
2762 Function::Sumx2my2 => self.fn_sumx2my2(args, cell),
2763 Function::Sumx2py2 => self.fn_sumx2py2(args, cell),
2764 Function::Sumxmy2 => self.fn_sumxmy2(args, cell),
2765 Function::Correl => self.fn_correl(args, cell),
2766 Function::Rsq => self.fn_rsq(args, cell),
2767 Function::Intercept => self.fn_intercept(args, cell),
2768 Function::Slope => self.fn_slope(args, cell),
2769 Function::Steyx => self.fn_steyx(args, cell),
2770 Function::Forecast => self.fn_forecast(args, cell),
2771 Function::ForecastLinear => self.fn_forecast_linear(args, cell),
2772 Function::ForecastEts => self.fn_forecast_ets(args, cell),
2773 Function::ForecastEtsConfint => self.fn_forecast_ets_confint(args, cell),
2774 Function::ForecastEtsSeasonality => self.fn_forecast_ets_seasonality(args, cell),
2775 Function::ForecastEtsStat => self.fn_forecast_ets_stat(args, cell),
2776 Function::Frequency => self.fn_frequency(args, cell),
2777 Function::Growth => self.fn_growth(args, cell),
2778 Function::Linest => self.fn_linest(args, cell),
2779 Function::Logest => self.fn_logest(args, cell),
2780 Function::ModeMult => self.fn_mode_mult(args, cell),
2781 Function::ModeSingl => self.fn_mode_sngl(args, cell),
2782 Function::PercentileExc => self.fn_percentile_exc(args, cell),
2783 Function::PercentileInc => self.fn_percentile_inc(args, cell),
2784 Function::PercentrankExc => self.fn_percentrank_exc(args, cell),
2785 Function::PercentrankInc => self.fn_percentrank_inc(args, cell),
2786 Function::Permut => self.fn_permut(args, cell),
2787 Function::Permutationa => self.fn_permutationa(args, cell),
2788 Function::Prob => self.fn_prob(args, cell),
2789 Function::QuartileExc => self.fn_quartile_exc(args, cell),
2790 Function::QuartileInc => self.fn_quartile_inc(args, cell),
2791 Function::Trend => self.fn_trend(args, cell),
2792 Function::Trimmean => self.fn_trimmean(args, cell),
2793 Function::Gauss => self.fn_gauss(args, cell),
2794 Function::Harmean => self.fn_harmean(args, cell),
2795 Function::Kurt => self.fn_kurt(args, cell),
2796 Function::Large => self.fn_large(args, cell),
2797 Function::MaxA => self.fn_maxa(args, cell),
2798 Function::Median => self.fn_median(args, cell),
2799 Function::MinA => self.fn_mina(args, cell),
2800 Function::RankAvg => self.fn_rank_avg(args, cell),
2801 Function::RankEq => self.fn_rank_eq(args, cell),
2802 Function::Skew => self.fn_skew(args, cell),
2803 Function::SkewP => self.fn_skew_p(args, cell),
2804 Function::Small => self.fn_small(args, cell),
2805 }
2806 }
2807}
2808
2809#[cfg(test)]
2810mod tests {
2811 #![allow(clippy::unwrap_used)]
2812 use std::{
2813 fs::File,
2814 io::{BufRead, BufReader},
2815 };
2816
2817 #[test]
2818 fn function_iterator() {
2819 let file = File::open("src/functions/mod.rs").unwrap();
2829 let reader = BufReader::new(file);
2830 let mut start = false;
2831 let mut list = Vec::new();
2832
2833 for line in reader.lines() {
2834 let text = line.unwrap();
2835 let text = text.trim().trim_end_matches(',');
2836 if text == "pub enum Function {" {
2837 start = true;
2838 continue;
2839 }
2840 if start {
2841 if text == "}" {
2842 break;
2843 }
2844 if text.starts_with("//") {
2845 continue;
2847 }
2848 if text.is_empty() {
2849 continue;
2851 }
2852 list.push(text.to_owned());
2853 }
2854 }
2855 }
2869}