Doxygen Source Code Documentation
parser.c File Reference
#include "f2c.h"
Go to the source code of this file.
Define Documentation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Function Documentation
|
Definition at line 3969 of file parser.c. References nz. Referenced by pareval_(), and parevec_().
03970 { 03971 /* System generated locals */ 03972 integer i__1; 03973 doublereal ret_val; 03974 03975 /* Local variables */ 03976 static integer i__, it, nz; 03977 static doublereal tmp; 03978 03979 03980 /* Parameter adjustments */ 03981 --x; 03982 03983 /* Function Body */ 03984 tmp = x[1]; 03985 it = 1; 03986 nz = 0; 03987 if (tmp == 0.) { 03988 nz = 1; 03989 } 03990 i__1 = *n; 03991 for (i__ = 2; i__ <= i__1; ++i__) { 03992 if (x[i__] > tmp) { 03993 it = i__; 03994 tmp = x[i__]; 03995 } 03996 if (x[i__] == 0.) { 03997 ++nz; 03998 } 03999 /* L100: */ 04000 } 04001 if (nz == *n) { 04002 ret_val = 0.; 04003 } else { 04004 ret_val = (doublereal) it; 04005 } 04006 return ret_val; 04007 } /* argmax_ */ |
|
Definition at line 4012 of file parser.c. References nz. Referenced by pareval_(), and parevec_().
04013 { 04014 /* System generated locals */ 04015 integer i__1; 04016 doublereal ret_val; 04017 04018 /* Local variables */ 04019 static integer i__, nz; 04020 04021 04022 /* Parameter adjustments */ 04023 --x; 04024 04025 /* Function Body */ 04026 nz = 0; 04027 i__1 = *n; 04028 for (i__ = 1; i__ <= i__1; ++i__) { 04029 if (x[i__] != 0.) { 04030 ++nz; 04031 } 04032 /* L100: */ 04033 } 04034 ret_val = (doublereal) nz; 04035 return ret_val; 04036 } /* argnum_ */ |
|
Definition at line 3583 of file parser.c. References abs. Referenced by pareval_(), and parevec_().
03584 { 03585 /* System generated locals */ 03586 doublereal ret_val, d__1; 03587 03588 /* Local variables */ 03589 static doublereal ax; 03590 03591 /* ... */ 03592 ax = abs(*x); 03593 if (ax <= .5) { 03594 ret_val = 1. - ax * 1.3333333333333333 * ax; 03595 } else if (ax <= 1.5) { 03596 /* Computing 2nd power */ 03597 d__1 = 1.5 - ax; 03598 ret_val = d__1 * d__1 * .666666666666667; 03599 } else { 03600 ret_val = 0.; 03601 } 03602 return ret_val; 03603 } /* bell2_ */ |
|
Definition at line 3664 of file parser.c. Referenced by pareval_(), and parevec_().
03665 { 03666 /* System generated locals */ 03667 doublereal ret_val; 03668 03669 if (*x == 0.) { 03670 ret_val = 0.; 03671 } else { 03672 ret_val = 1.; 03673 } 03674 return ret_val; 03675 } /* bool_ */ |
|
Definition at line 3708 of file parser.c. Referenced by hmode_(), lmode_(), median_(), and orstat_().
03709 { 03710 /* System generated locals */ 03711 integer i__1; 03712 03713 /* Local variables */ 03714 static integer i__, it; 03715 static doublereal tmp; 03716 03717 /* ------------------------------------ Bubble sort */ 03718 /* Parameter adjustments */ 03719 --x; 03720 03721 /* Function Body */ 03722 L50: 03723 it = 0; 03724 i__1 = *n; 03725 for (i__ = 2; i__ <= i__1; ++i__) { 03726 if (x[i__ - 1] > x[i__]) { 03727 tmp = x[i__]; 03728 x[i__] = x[i__ - 1]; 03729 x[i__ - 1] = tmp; 03730 it = 1; 03731 } 03732 /* L100: */ 03733 } 03734 if (it != 0) { 03735 goto L50; 03736 } 03737 return 0; 03738 } /* bsort_ */ |
|
Definition at line 4207 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 4246 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 4259 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 4280 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 4293 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 4220 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 4233 of file parser.c. References qqqerr_(). Referenced by pareval_(), and parevec_().
|
|
Definition at line 3360 of file parser.c. References c_b384, top, and unif_(). Referenced by pareval_(), and parevec_().
03361 { 03362 /* System generated locals */ 03363 doublereal ret_val; 03364 03365 /* Builtin functions */ 03366 double log(doublereal); 03367 03368 /* Local variables */ 03369 extern doublereal unif_(doublereal *); 03370 static doublereal u1; 03371 03372 03373 /* Return an exponentially distributed deviate: F(x) = 1-exp(-x/top) */ 03374 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03375 */ 03376 L100: 03377 u1 = unif_(&c_b384); 03378 if (u1 <= 0.) { 03379 goto L100; 03380 } 03381 ret_val = -(*top) * log(u1); 03382 return ret_val; 03383 } /* eran_ */ |
|
pop this nonterminal and try to match the ) with the next compi le stack entry Definition at line 613 of file parser.c. Referenced by parser_().
00615 { 00616 /* Initialized data */ 00617 00618 static char c_funcname__[32*100] = "SIN " 00619 "COS " "TAN " 00620 " " "ASIN " "ACOS " 00621 " " "ATAN " "ATAN2 " 00622 " " "SINH " "COSH " 00623 " " "TANH " "ASIN" 00624 "H " "ACOSH " 00625 "ATANH " "EXP " 00626 " " "LOG " "LOG10 " 00627 " " "ABS " "INT " 00628 " " "SQRT " "MAX " 00629 " " "MIN " "AI " 00630 " " "DAI " 00631 "I0 " "I1 " 00632 " " "J0 " "J1 " 00633 " " "K0 " "K1 " 00634 " " "Y0 " "Y1 " 00635 " " "BI " "DBI " 00636 " " "ERF " 00637 "ERFC " "GAMMA " 00638 " " "QG " "QGINV " 00639 " " "BELL2 " "RECT " 00640 " " "STEP " "BOOL " 00641 " " "AND " "OR " 00642 " " "MOFN " 00643 "ASTEP " "SIND " 00644 " " "COSD " "TAND " 00645 " " "MEDIAN " "FICO_T2P " 00646 " " "FICO_P2T " "FICO_T2Z " 00647 " " "FITT_T2P " "FITT" 00648 "_P2T " "FITT_T2Z " 00649 "FIFT_T2P " "FIFT_P2T " 00650 " " "FIFT_T2Z " "FIZT_T2P " 00651 " " "FIZT_P2T " "FIZT_T2Z " 00652 " " "FICT_T2P " "FICT_P2T " 00653 " " "FICT_T2Z " "FIBT" 00654 "_T2P " "FIBT_P2T " 00655 "FIBT_T2Z " "FIBN_T2P " 00656 " " "FIBN_P2T " "FIBN_T2Z " 00657 " " "FIGT_T2P " "FIGT_P2T " 00658 " " "FIGT_T2Z " "FIPT_T2P " 00659 " " "FIPT_P2T " "FIPT" 00660 "_T2Z " "ZTONE " 00661 "LMODE " "HMODE " 00662 " " "GRAN " "URAN " 00663 " " "IRAN " "ERAN " 00664 " " "LRAN " "ORSTAT " 00665 " " "TENT " "MAD " 00666 " " "ARGMAX " 00667 "ARGNUM " "NOTZERO " 00668 " " "ISZERO " "EQUALS " 00669 " " "ISPOSITIVE " "ISNEGATIVE " 00670 " " "MEAN " "STDEV " 00671 " " "SEM " "PLEG" 00672 " " "DUMMY "; 00673 00674 /* Builtin functions */ 00675 /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen); 00676 00677 00678 /* Execute the opcode on the evaluation stack. Note that no attempt is 00679 */ 00680 /* made to intercept errors, such as divide by zero, ACOS(2), etc. */ 00681 00682 00683 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00684 */ 00685 00686 /* Branch to special code for function evaluations */ 00687 00688 /* ----------------------------------------------------------------------- 00689 */ 00690 /* Include file for PARSER. This file must be kept with PARSER.FOR. */ 00691 /* It defines some symbolic constants that PARSER and its subsidiary */ 00692 /* routines use. */ 00693 /* ....................................................................... 00694 */ 00695 /* Define Token types and values */ 00696 00697 00698 00699 /* ....................................................................... 00700 */ 00701 /* Define the Nonterminals */ 00702 00703 00704 /* ....................................................................... 00705 */ 00706 /* Define the Opcodes */ 00707 00708 00709 /* ....................................................................... 00710 */ 00711 /* Define Function names, etc. */ 00712 00713 00714 00715 00716 /* ----------------------------------------------------------------------- 00717 */ 00718 if (*n_opcode__ >= 4000) { 00719 goto L5000; 00720 } 00721 /* ....................................................................... 00722 */ 00723 if (*n_opcode__ == 3006) { 00724 /* !unary minus, the only unary op. */ 00725 s_copy(c_code__, "--", 8L, 2L); 00726 00727 } else { 00728 /* !a binary operation */ 00729 if (*n_opcode__ == 3001) { 00730 /* !add */ 00731 s_copy(c_code__, "+", 8L, 1L); 00732 } else if (*n_opcode__ == 3002) { 00733 /* !subtract */ 00734 s_copy(c_code__, "-", 8L, 1L); 00735 } else if (*n_opcode__ == 3003) { 00736 /* !multiply */ 00737 s_copy(c_code__, "*", 8L, 1L); 00738 } else if (*n_opcode__ == 3004) { 00739 /* !divide */ 00740 s_copy(c_code__, "/", 8L, 1L); 00741 } else if (*n_opcode__ == 3005) { 00742 /* !** */ 00743 s_copy(c_code__, "**", 8L, 2L); 00744 } 00745 } 00746 goto L8000; 00747 /* ....................................................................... 00748 */ 00749 /* Function evaluation */ 00750 00751 L5000: 00752 s_copy(c_code__, c_funcname__ + (*n_opcode__ - 4001 << 5), 8L, 32L); 00753 /* ....................................................................... 00754 */ 00755 L8000: 00756 return 0; 00757 } /* execute_ */ |
|
Definition at line 762 of file parser.c. References c__1, do_fio(), e_rsfi(), e_wsfi(), i_len(), icilist::iciend, icilist::icierr, icilist::icifmt, icilist::icirlen, icilist::icirnum, icilist::iciunit, L, s_cmp(), s_copy(), s_rsfi(), and s_wsfi(). Referenced by parser_().
00764 { 00765 /* Initialized data */ 00766 00767 static char c_funcname__[32*100] = "SIN " 00768 "COS " "TAN " 00769 " " "ASIN " "ACOS " 00770 " " "ATAN " "ATAN2 " 00771 " " "SINH " "COSH " 00772 " " "TANH " "ASIN" 00773 "H " "ACOSH " 00774 "ATANH " "EXP " 00775 " " "LOG " "LOG10 " 00776 " " "ABS " "INT " 00777 " " "SQRT " "MAX " 00778 " " "MIN " "AI " 00779 " " "DAI " 00780 "I0 " "I1 " 00781 " " "J0 " "J1 " 00782 " " "K0 " "K1 " 00783 " " "Y0 " "Y1 " 00784 " " "BI " "DBI " 00785 " " "ERF " 00786 "ERFC " "GAMMA " 00787 " " "QG " "QGINV " 00788 " " "BELL2 " "RECT " 00789 " " "STEP " "BOOL " 00790 " " "AND " "OR " 00791 " " "MOFN " 00792 "ASTEP " "SIND " 00793 " " "COSD " "TAND " 00794 " " "MEDIAN " "FICO_T2P " 00795 " " "FICO_P2T " "FICO_T2Z " 00796 " " "FITT_T2P " "FITT" 00797 "_P2T " "FITT_T2Z " 00798 "FIFT_T2P " "FIFT_P2T " 00799 " " "FIFT_T2Z " "FIZT_T2P " 00800 " " "FIZT_P2T " "FIZT_T2Z " 00801 " " "FICT_T2P " "FICT_P2T " 00802 " " "FICT_T2Z " "FIBT" 00803 "_T2P " "FIBT_P2T " 00804 "FIBT_T2Z " "FIBN_T2P " 00805 " " "FIBN_P2T " "FIBN_T2Z " 00806 " " "FIGT_T2P " "FIGT_P2T " 00807 " " "FIGT_T2Z " "FIPT_T2P " 00808 " " "FIPT_P2T " "FIPT" 00809 "_T2Z " "ZTONE " 00810 "LMODE " "HMODE " 00811 " " "GRAN " "URAN " 00812 " " "IRAN " "ERAN " 00813 " " "LRAN " "ORSTAT " 00814 " " "TENT " "MAD " 00815 " " "ARGMAX " 00816 "ARGNUM " "NOTZERO " 00817 " " "ISZERO " "EQUALS " 00818 " " "ISPOSITIVE " "ISNEGATIVE " 00819 " " "MEAN " "STDEV " 00820 " " "SEM " "PLEG" 00821 " " "DUMMY "; 00822 00823 /* Format strings */ 00824 static char fmt_5501[] = "(\002(F\002,i1,\002.0)\002)"; 00825 static char fmt_5502[] = "(\002(F\002,i2,\002.0)\002)"; 00826 00827 /* System generated locals */ 00828 char ch__1[1]; 00829 icilist ici__1; 00830 static doublereal equiv_0[1]; 00831 00832 /* Builtin functions */ 00833 integer i_len(char *, ftnlen), s_cmp(char *, char *, ftnlen, ftnlen); 00834 /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen); 00835 integer s_wsfi(icilist *), do_fio(integer *, char *, ftnlen), e_wsfi(void) 00836 , s_rsfi(icilist *), e_rsfi(void); 00837 00838 /* Local variables */ 00839 static integer nlen, ipos, npos; 00840 static char c_val__[32]; 00841 static integer ifunc; 00842 #define c8_val__ ((char *)equiv_0) 00843 #define r8_val__ (equiv_0) 00844 static integer io_code__; 00845 static char c_first__[1], c_id__[32]; 00846 00847 /* Fortran I/O blocks */ 00848 static icilist io___36 = { 0, c_val__, 0, fmt_5501, 32, 1 }; 00849 static icilist io___37 = { 0, c_val__, 0, fmt_5502, 32, 1 }; 00850 00851 00852 00853 /* Return the 1st token in the input stream. */ 00854 00855 00856 00857 00858 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00859 */ 00860 /* Statement function definitions */ 00861 00862 /* ----------------------------------------------------------------------- 00863 */ 00864 /* Include file for PARSER. This file must be kept with PARSER.FOR. */ 00865 /* It defines some symbolic constants that PARSER and its subsidiary */ 00866 /* routines use. */ 00867 /* ....................................................................... 00868 */ 00869 /* Define Token types and values */ 00870 00871 00872 00873 /* ....................................................................... 00874 */ 00875 /* Define the Nonterminals */ 00876 00877 00878 /* ....................................................................... 00879 */ 00880 /* Define the Opcodes */ 00881 00882 00883 /* ....................................................................... 00884 */ 00885 /* Define Function names, etc. */ 00886 00887 00888 00889 00890 /* ----------------------------------------------------------------------- 00891 */ 00892 00893 00894 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00895 */ 00896 00897 *ntype = 1000; 00898 *nused = 0; 00899 nlen = i_len(c_input__, c_input_len); 00900 if (nlen <= 0) { 00901 goto L8000; 00902 } 00903 00904 /* Process the simple cases 1st */ 00905 00906 *(unsigned char *)c_first__ = *(unsigned char *)c_input__; 00907 00908 if (*(unsigned char *)c_first__ == ' ') { 00909 goto L8000; 00910 } 00911 00912 *nused = 1; 00913 if (*(unsigned char *)c_first__ == '+') { 00914 *ntype = 1001; 00915 *value = 1.; 00916 } else if (*(unsigned char *)c_first__ == '-') { 00917 *ntype = 1001; 00918 *value = 2.; 00919 } else if (*(unsigned char *)c_first__ == '/') { 00920 *ntype = 1002; 00921 *value = 2.; 00922 } else if (*(unsigned char *)c_first__ == '*') { 00923 if (s_cmp(c_input__, "**", 2L, 2L) == 0) { 00924 *ntype = 1003; 00925 *value = 1.; 00926 *nused = 2; 00927 } else { 00928 *ntype = 1002; 00929 *value = 1.; 00930 } 00931 } else if (*(unsigned char *)c_first__ == '^') { 00932 *ntype = 1003; 00933 *value = 1.; 00934 } else if (*(unsigned char *)c_first__ == '(') { 00935 *ntype = 1004; 00936 } else if (*(unsigned char *)c_first__ == ')') { 00937 *ntype = 1005; 00938 } else if (*(unsigned char *)c_first__ == ',') { 00939 *ntype = 1006; 00940 } 00941 00942 if (*ntype != 1000) { 00943 goto L8000; 00944 } 00945 /* !exit if above was successful */ 00946 /* ....................................................................... 00947 */ 00948 /* The only possibilities left are a variable name, a function name, */ 00949 /* or a number. */ 00950 00951 *(unsigned char *)&ch__1[0] = *(unsigned char *)c_first__; 00952 if (*(unsigned char *)&ch__1[0] >= 'A' && *(unsigned char *)&ch__1[0] <= 00953 'Z') { 00954 /* !a name */ 00955 00956 npos = 2; 00957 L110: 00958 *(unsigned char *)&ch__1[0] = *(unsigned char *)&c_input__[npos - 1]; 00959 if (! (*(unsigned char *)&ch__1[0] >= 'A' && *(unsigned char *)&ch__1[ 00960 0] <= 'Z' || *(unsigned char *)&ch__1[0] >= '0' && *(unsigned 00961 char *)&ch__1[0] <= '9' || *(unsigned char *)&ch__1[0] == '_' 00962 || *(unsigned char *)&ch__1[0] == '$')) { 00963 goto L120; 00964 } 00965 ++npos; 00966 goto L110; 00967 L120: 00968 --npos; 00969 s_copy(c_id__, c_input__, 32L, npos); 00970 00971 /* The name is now in C_ID. Check to see if it is a function name. 00972 */ 00973 00974 ifunc = 1; 00975 s_copy(c_funcname__ + 3168, c_id__, 32L, 32L); 00976 L210: 00977 if (! (s_cmp(c_id__, c_funcname__ + (ifunc - 1 << 5), 32L, 32L) != 0)) 00978 { 00979 goto L220; 00980 } 00981 ++ifunc; 00982 goto L210; 00983 L220: 00984 if (ifunc <= 99) { 00985 /* !it is a function */ 00986 *ntype = 1008; 00987 *value = (doublereal) ifunc; 00988 *nused = npos; 00989 } else if (s_cmp(c_id__, "PI", npos, 2L) == 0) { 00990 /* !symbolic pi */ 00991 *ntype = 1007; 00992 *value = 3.1415926535897932; 00993 *nused = npos; 00994 } else { 00995 /* !must be a symbol */ 00996 *ntype = 1009; 00997 s_copy(c8_val__, c_id__, 8L, npos); 00998 *value = *r8_val__; 00999 *nused = npos; 01000 } 01001 /* ................................................................... 01002 .... */ 01003 /* try for a number */ 01004 01005 } else /* if(complicated condition) */ { 01006 *(unsigned char *)&ch__1[0] = *(unsigned char *)c_first__; 01007 if (*(unsigned char *)&ch__1[0] >= '0' && *(unsigned char *)&ch__1[0] 01008 <= '9' || *(unsigned char *)c_first__ == '.') { 01009 npos = 2; 01010 L310: 01011 *(unsigned char *)&ch__1[0] = *(unsigned char *)&c_input__[npos - 01012 1]; 01013 if (! (*(unsigned char *)&ch__1[0] >= '0' && *(unsigned char *)& 01014 ch__1[0] <= '9')) { 01015 goto L320; 01016 } 01017 /* !skip digits */ 01018 ++npos; 01019 goto L310; 01020 L320: 01021 if (*(unsigned char *)c_first__ != '.' && *(unsigned char *)& 01022 c_input__[npos - 1] == '.') { 01023 ++npos; 01024 L410: 01025 *(unsigned char *)&ch__1[0] = *(unsigned char *)&c_input__[ 01026 npos - 1]; 01027 if (! (*(unsigned char *)&ch__1[0] >= '0' && *(unsigned char * 01028 )&ch__1[0] <= '9')) { 01029 goto L420; 01030 } 01031 /* !skip digits after decimal pt */ 01032 ++npos; 01033 goto L410; 01034 L420: 01035 ; 01036 } 01037 /* !allow for exponent */ 01038 if (*(unsigned char *)&c_input__[npos - 1] == 'E' || *(unsigned 01039 char *)&c_input__[npos - 1] == 'D') { 01040 ipos = npos + 1; 01041 if (*(unsigned char *)&c_input__[ipos - 1] == '+' || *( 01042 unsigned char *)&c_input__[ipos - 1] == '-') { 01043 ++ipos; 01044 } 01045 *(unsigned char *)&ch__1[0] = *(unsigned char *)&c_input__[ 01046 ipos - 1]; 01047 if (*(unsigned char *)&ch__1[0] >= '0' && *(unsigned char *)& 01048 ch__1[0] <= '9') { 01049 /* !only if a digit follows the E can it be legal */ 01050 npos = ipos; 01051 L510: 01052 *(unsigned char *)&ch__1[0] = *(unsigned char *)& 01053 c_input__[npos - 1]; 01054 if (! (*(unsigned char *)&ch__1[0] >= '0' && *(unsigned 01055 char *)&ch__1[0] <= '9')) { 01056 goto L520; 01057 } 01058 ++npos; 01059 goto L510; 01060 L520: 01061 ; 01062 } 01063 } 01064 --npos; 01065 /* !number runs from position 1 to NPOS */ 01066 *nused = npos; 01067 if (npos <= 9) { 01068 s_wsfi(&io___36); 01069 do_fio(&c__1, (char *)&npos, (ftnlen)sizeof(integer)); 01070 e_wsfi(); 01071 } else { 01072 s_wsfi(&io___37); 01073 do_fio(&c__1, (char *)&npos, (ftnlen)sizeof(integer)); 01074 e_wsfi(); 01075 } 01076 ici__1.icierr = 1; 01077 ici__1.iciend = 1; 01078 ici__1.icirnum = 1; 01079 ici__1.icirlen = npos; 01080 ici__1.iciunit = c_input__; 01081 ici__1.icifmt = c_val__; 01082 io_code__ = s_rsfi(&ici__1); 01083 if (io_code__ != 0) { 01084 goto L100001; 01085 } 01086 io_code__ = do_fio(&c__1, (char *)&(*value), (ftnlen)sizeof( 01087 doublereal)); 01088 if (io_code__ != 0) { 01089 goto L100001; 01090 } 01091 io_code__ = e_rsfi(); 01092 L100001: 01093 01094 /* CC WRITE(*,5509) C_INPUT(1:NPOS) , C_VAL , VALUE */ 01095 /* CC5509 FORMAT( */ 01096 /* CC X ' scanned text ',A/ */ 01097 /* CC X ' using format ',A/ */ 01098 /* CC X ' giving VALUE ',1PG14.7) */ 01099 01100 if (io_code__ == 0) { 01101 *ntype = 1007; 01102 } else { 01103 *ntype = 1999; 01104 } 01105 /* ............................................................... 01106 ........ */ 01107 /* If not a number, an error! */ 01108 01109 } else { 01110 *ntype = 1999; 01111 *nused = 1; 01112 } 01113 } 01114 /* ....................................................................... 01115 */ 01116 L8000: 01117 return 0; 01118 } /* get_token__ */ |
|
Definition at line 3478 of file parser.c. References c_b398, c_b399, c_b400, c_b401, c_b402, c_b403, c_b404, c_b405, c_b406, c_b407, c_b408, c_b409, and unif_(). Referenced by gran_().
03479 { 03480 /* System generated locals */ 03481 doublereal ret_val; 03482 03483 /* Local variables */ 03484 extern doublereal unif_(doublereal *); 03485 static doublereal g; 03486 03487 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03488 */ 03489 03490 g = unif_(&c_b398) - 6. + unif_(&c_b399) + unif_(&c_b400) + unif_(&c_b401) 03491 + unif_(&c_b402) + unif_(&c_b403) + unif_(&c_b404) + unif_(& 03492 c_b405) + unif_(&c_b406) + unif_(&c_b407) + unif_(&c_b408) + 03493 unif_(&c_b409); 03494 ret_val = *b + *s * g; 03495 return ret_val; 03496 } /* gran1_ */ |
|
Definition at line 3436 of file parser.c. References c_b384, and unif_(). Referenced by gran_().
03437 { 03438 /* Initialized data */ 03439 03440 static integer ip = 0; 03441 03442 /* System generated locals */ 03443 doublereal ret_val; 03444 03445 /* Builtin functions */ 03446 double log(doublereal), sqrt(doublereal), sin(doublereal), cos(doublereal) 03447 ; 03448 03449 /* Local variables */ 03450 extern doublereal unif_(doublereal *); 03451 static doublereal u1, u2; 03452 03453 03454 /* Compute a Gaussian random deviate with mean B and stdev S */ 03455 03456 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03457 */ 03458 03459 if (ip == 0) { 03460 L100: 03461 u1 = unif_(&c_b384); 03462 if (u1 <= 0.) { 03463 goto L100; 03464 } 03465 u2 = unif_(&c_b384); 03466 ret_val = *b + *s * sqrt(log(u1) * -2.) * sin(u2 * 6.2831853); 03467 ip = 1; 03468 } else { 03469 ret_val = *b + *s * sqrt(log(u1) * -2.) * cos(u2 * 6.2831853); 03470 ip = 0; 03471 } 03472 return ret_val; 03473 } /* gran2_ */ |
|
Definition at line 3501 of file parser.c. References c_b384, gran1_(), gran2_(), and unif_(). Referenced by pareval_(), and parevec_().
03502 { 03503 /* System generated locals */ 03504 doublereal ret_val; 03505 03506 /* Local variables */ 03507 extern doublereal unif_(doublereal *), gran1_(doublereal *, doublereal *), 03508 gran2_(doublereal *, doublereal *); 03509 static doublereal uu; 03510 03511 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03512 */ 03513 03514 uu = unif_(&c_b384); 03515 if (uu <= .5) { 03516 ret_val = gran1_(b, s); 03517 } else { 03518 ret_val = gran2_(b, s); 03519 } 03520 return ret_val; 03521 } /* gran_ */ |
|
Definition at line 1178 of file parser.c. Referenced by PARSER_has_symbol().
01180 { 01181 /* System generated locals */ 01182 integer ret_val, i__1; 01183 01184 /* Builtin functions */ 01185 integer s_cmp(char *, char *, ftnlen, ftnlen); 01186 01187 /* Local variables */ 01188 static integer ncode; 01189 static char sss[1]; 01190 01191 01192 01193 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 01194 */ 01195 01196 /* Parameter adjustments */ 01197 c_code__ -= 8; 01198 01199 /* Function Body */ 01200 ret_val = 0; 01201 if (*num_code__ <= 0) { 01202 return ret_val; 01203 } 01204 *(unsigned char *)sss = *(unsigned char *)sym; 01205 01206 i__1 = *num_code__; 01207 for (ncode = 1; ncode <= i__1; ++ncode) { 01208 if (s_cmp(c_code__ + (ncode << 3), "PUSHSYM", 8L, 7L) == 0) { 01209 if (*(unsigned char *)&c_code__[(ncode + 1) * 8] == *(unsigned 01210 char *)sss) { 01211 ret_val = 1; 01212 return ret_val; 01213 } 01214 } 01215 /* L1000: */ 01216 } 01217 01218 return ret_val; 01219 } /* hassym_ */ |
|
Definition at line 4041 of file parser.c. References bsort_(). Referenced by pareval_(), and parevec_().
04042 { 04043 /* System generated locals */ 04044 integer i__1; 04045 doublereal ret_val; 04046 04047 /* Local variables */ 04048 static integer i__; 04049 extern /* Subroutine */ int bsort_(integer *, doublereal *); 04050 static integer ib; 04051 static doublereal vb; 04052 static integer iv; 04053 static doublereal val; 04054 04055 04056 /* Parameter adjustments */ 04057 --x; 04058 04059 /* Function Body */ 04060 if (*n == 1) { 04061 ret_val = x[1]; 04062 return ret_val; 04063 } 04064 04065 bsort_(n, &x[1]); 04066 04067 val = x[1]; 04068 iv = 1; 04069 ib = 0; 04070 i__1 = *n; 04071 for (i__ = 2; i__ <= i__1; ++i__) { 04072 if (x[i__] != val) { 04073 if (iv >= ib) { 04074 vb = val; 04075 ib = iv; 04076 } 04077 val = x[i__]; 04078 iv = 1; 04079 } else { 04080 ++iv; 04081 } 04082 /* L100: */ 04083 } 04084 if (iv >= ib) { 04085 vb = val; 04086 } 04087 ret_val = vb; 04088 return ret_val; 04089 } /* hmode_ */ |
|
Definition at line 3337 of file parser.c. References c_b384, d_int(), top, and unif_(). Referenced by pareval_(), and parevec_().
03338 { 03339 /* System generated locals */ 03340 doublereal ret_val, d__1; 03341 03342 /* Builtin functions */ 03343 double d_int(doublereal *); 03344 03345 /* Local variables */ 03346 extern doublereal unif_(doublereal *); 03347 03348 03349 /* Return an integer uniformly distributed among 0..TOP */ 03350 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03351 */ 03352 d__1 = (*top + 1.) * unif_(&c_b384); 03353 ret_val = d_int(&d__1); 03354 return ret_val; 03355 } /* iran_ */ |
|
Definition at line 3680 of file parser.c. Referenced by pareval_(), and parevec_().
03681 { 03682 /* System generated locals */ 03683 integer i__1; 03684 doublereal ret_val; 03685 03686 /* Local variables */ 03687 static integer i__; 03688 03689 /* Parameter adjustments */ 03690 --x; 03691 03692 /* Function Body */ 03693 ret_val = 0.; 03694 i__1 = *n; 03695 for (i__ = 1; i__ <= i__1; ++i__) { 03696 if (x[i__] == 0.) { 03697 return ret_val; 03698 } 03699 /* L100: */ 03700 } 03701 ret_val = 1.; 03702 return ret_val; 03703 } /* land_ */ |
|
Definition at line 1128 of file parser.c. References i_len(). Referenced by parser_().
01129 { 01130 /* System generated locals */ 01131 integer ret_val; 01132 01133 /* Builtin functions */ 01134 integer i_len(char *, ftnlen); 01135 01136 /* Local variables */ 01137 static integer npos; 01138 01139 01140 /* Return the position of the last nonblank character in the input */ 01141 /* character string. CLINE is CHARACTER*(*). Even if CLINE is all */ 01142 /* blanks, LAST_NONBLANK will be returned as 1 so that operations of the 01143 */ 01144 /* form CLINE(1:LAST_NONBLANK) won't be garbage. */ 01145 /* ))).................................................................... 01146 */ 01147 01148 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 01149 */ 01150 01151 /* Start at the end and work backwards until a nonblank is found. */ 01152 /* Loop back to 100 to check position # NPOS each time. */ 01153 01154 npos = i_len(cline, cline_len); 01155 L100: 01156 /* quit if at the beginning */ 01157 if (npos <= 1) { 01158 goto L200; 01159 } 01160 /* quit if not a blank or a null */ 01161 if (*(unsigned char *)&cline[npos - 1] != ' ' && *(unsigned char *)&cline[ 01162 npos - 1] != '\0') { 01163 goto L200; 01164 } 01165 /* move back one position and try again */ 01166 --npos; 01167 goto L100; 01168 /* ....................................................................... 01169 */ 01170 L200: 01171 ret_val = npos; 01172 return ret_val; 01173 } /* last_nonblank__ */ |
|
Definition at line 4094 of file parser.c. References bsort_(). Referenced by pareval_(), and parevec_().
04095 { 04096 /* System generated locals */ 04097 integer i__1; 04098 doublereal ret_val; 04099 04100 /* Local variables */ 04101 static integer i__; 04102 extern /* Subroutine */ int bsort_(integer *, doublereal *); 04103 static integer ib; 04104 static doublereal vb; 04105 static integer iv; 04106 static doublereal val; 04107 04108 04109 /* Parameter adjustments */ 04110 --x; 04111 04112 /* Function Body */ 04113 if (*n == 1) { 04114 ret_val = x[1]; 04115 return ret_val; 04116 } 04117 04118 bsort_(n, &x[1]); 04119 04120 val = x[1]; 04121 iv = 1; 04122 ib = 0; 04123 i__1 = *n; 04124 for (i__ = 2; i__ <= i__1; ++i__) { 04125 if (x[i__] != val) { 04126 if (iv > ib) { 04127 vb = val; 04128 ib = iv; 04129 } 04130 val = x[i__]; 04131 iv = 1; 04132 } else { 04133 ++iv; 04134 } 04135 /* L100: */ 04136 } 04137 if (iv > ib) { 04138 vb = val; 04139 } 04140 ret_val = vb; 04141 return ret_val; 04142 } /* lmode_ */ |
|
Definition at line 4175 of file parser.c. Referenced by pareval_(), and parevec_().
04176 { 04177 /* System generated locals */ 04178 integer i__1; 04179 doublereal ret_val; 04180 04181 /* Local variables */ 04182 static integer c__, i__; 04183 04184 /* Parameter adjustments */ 04185 --x; 04186 04187 /* Function Body */ 04188 c__ = 0; 04189 i__1 = *n; 04190 for (i__ = 1; i__ <= i__1; ++i__) { 04191 if (x[i__] != 0.) { 04192 ++c__; 04193 } 04194 /* L100: */ 04195 } 04196 if (c__ >= *m) { 04197 ret_val = 1.; 04198 } else { 04199 ret_val = 0.; 04200 } 04201 return ret_val; 04202 } /* lmofn_ */ |
|
Definition at line 4147 of file parser.c. Referenced by pareval_(), and parevec_().
04148 { 04149 /* System generated locals */ 04150 integer i__1; 04151 doublereal ret_val; 04152 04153 /* Local variables */ 04154 static integer i__; 04155 04156 /* Parameter adjustments */ 04157 --x; 04158 04159 /* Function Body */ 04160 ret_val = 1.; 04161 i__1 = *n; 04162 for (i__ = 1; i__ <= i__1; ++i__) { 04163 if (x[i__] != 0.) { 04164 return ret_val; 04165 } 04166 /* L100: */ 04167 } 04168 ret_val = 0.; 04169 return ret_val; 04170 } /* lor_ */ |
|
Definition at line 3388 of file parser.c. References c_b384, top, and unif_(). Referenced by pareval_(), and parevec_().
03389 { 03390 /* System generated locals */ 03391 doublereal ret_val; 03392 03393 /* Builtin functions */ 03394 double log(doublereal); 03395 03396 /* Local variables */ 03397 extern doublereal unif_(doublereal *); 03398 static doublereal u1; 03399 03400 03401 /* Return a logistically distributed deviate: F(x) = 1/[1+exp(-x/top)] */ 03402 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03403 */ 03404 L100: 03405 u1 = unif_(&c_b384); 03406 if (u1 <= 0. || u1 >= 1.) { 03407 goto L100; 03408 } 03409 ret_val = *top * log(1. / u1 - 1.); 03410 return ret_val; 03411 } /* lran_ */ |
|
Definition at line 3932 of file parser.c. References abs, and median_(). Referenced by pareval_(), and parevec_().
03933 { 03934 /* System generated locals */ 03935 integer i__1; 03936 doublereal ret_val, d__1; 03937 03938 /* Local variables */ 03939 extern doublereal median_(integer *, doublereal *); 03940 static integer it; 03941 static doublereal tmp; 03942 03943 03944 /* Parameter adjustments */ 03945 --x; 03946 03947 /* Function Body */ 03948 if (*n == 1) { 03949 ret_val = 0.; 03950 return ret_val; 03951 } else if (*n == 2) { 03952 ret_val = (d__1 = x[1] - x[2], abs(d__1)) * .5; 03953 return ret_val; 03954 } 03955 03956 tmp = median_(n, &x[1]); 03957 i__1 = *n; 03958 for (it = 1; it <= i__1; ++it) { 03959 x[it] = (d__1 = x[it] - tmp, abs(d__1)); 03960 /* L100: */ 03961 } 03962 ret_val = median_(n, &x[1]); 03963 return ret_val; 03964 } /* mad_ */ |
|
Definition at line 3776 of file parser.c. Referenced by pareval_(), and parevec_().
03777 { 03778 /* System generated locals */ 03779 integer i__1; 03780 doublereal ret_val; 03781 03782 /* Local variables */ 03783 static integer it; 03784 static doublereal tmp; 03785 03786 03787 /* Parameter adjustments */ 03788 --x; 03789 03790 /* Function Body */ 03791 if (*n == 1) { 03792 ret_val = x[1]; 03793 return ret_val; 03794 } else if (*n == 2) { 03795 ret_val = (x[1] + x[2]) * .5; 03796 return ret_val; 03797 } 03798 tmp = 0.; 03799 i__1 = *n; 03800 for (it = 1; it <= i__1; ++it) { 03801 tmp += x[it]; 03802 } 03803 ret_val = tmp / *n; 03804 return ret_val; 03805 } /* mean_ */ |
|
Definition at line 3876 of file parser.c. References bsort_(). Referenced by mad_(), pareval_(), and parevec_().
03877 { 03878 /* System generated locals */ 03879 doublereal ret_val; 03880 03881 /* Local variables */ 03882 extern /* Subroutine */ int bsort_(integer *, doublereal *); 03883 static integer it; 03884 static doublereal tmp; 03885 03886 03887 /* Parameter adjustments */ 03888 --x; 03889 03890 /* Function Body */ 03891 if (*n == 1) { 03892 ret_val = x[1]; 03893 return ret_val; 03894 } else if (*n == 2) { 03895 ret_val = (x[1] + x[2]) * .5; 03896 return ret_val; 03897 } else if (*n == 3) { 03898 if (x[1] > x[2]) { 03899 tmp = x[2]; 03900 x[2] = x[1]; 03901 x[1] = tmp; 03902 } 03903 if (x[1] > x[3]) { 03904 ret_val = x[1]; 03905 } else if (x[2] > x[3]) { 03906 ret_val = x[3]; 03907 } else { 03908 ret_val = x[2]; 03909 } 03910 return ret_val; 03911 } 03912 03913 /* --- sort it */ 03914 03915 bsort_(n, &x[1]); 03916 03917 /* --- Even N --> average of middle 2 */ 03918 /* --- Odd N --> middle 1 */ 03919 03920 it = *n / 2; 03921 if (it << 1 == *n) { 03922 ret_val = (x[it] + x[it + 1]) * .5; 03923 } else { 03924 ret_val = x[it + 1]; 03925 } 03926 return ret_val; 03927 } /* median_ */ |
|
Definition at line 3743 of file parser.c. References bsort_(). Referenced by pareval_(), and parevec_().
03744 { 03745 /* System generated locals */ 03746 doublereal ret_val; 03747 03748 /* Local variables */ 03749 static integer i__; 03750 extern /* Subroutine */ int bsort_(integer *, doublereal *); 03751 03752 03753 /* Parameter adjustments */ 03754 --x; 03755 03756 /* Function Body */ 03757 if (*n <= 1) { 03758 ret_val = x[1]; 03759 return ret_val; 03760 } 03761 03762 i__ = *m; 03763 if (i__ <= 0) { 03764 i__ = 1; 03765 } else if (i__ > *n) { 03766 i__ = *n; 03767 } 03768 bsort_(n, &x[1]); 03769 ret_val = x[i__]; 03770 return ret_val; 03771 } /* orstat_ */ |
|
Definition at line 1224 of file parser.c. References abs, argmax_(), argnum_(), bell2_(), bool_(), c__1, d_int(), d_lg10(), dai_(), dbesi0_(), dbesi1_(), dbesj0_(), dbesj1_(), dbesk0_(), dbesk1_(), dbesy0_(), dbesy1_(), dbi_(), derf_(), derfc_(), dgamma_(), eran_(), gran_(), hmode_(), iran_(), L, land_(), legendre_(), lmode_(), lmofn_(), lor_(), lran_(), mad_(), max, mean_(), median_(), min, orstat_(), pow_dd(), qg_(), qginv_(), rect_(), s_cmp(), s_copy(), sem_(), stdev_(), step_(), tent_(), uran_(), and ztone_(). Referenced by MAIN__(), and PARSER_evaluate_one().
01226 { 01227 /* System generated locals */ 01228 doublereal ret_val, d__1, d__2; 01229 static doublereal equiv_0[1]; 01230 01231 /* Builtin functions */ 01232 /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen); 01233 integer s_cmp(char *, char *, ftnlen, ftnlen); 01234 double d_int(doublereal *), pow_dd(doublereal *, doublereal *), sin( 01235 doublereal), cos(doublereal), tan(doublereal), sqrt(doublereal), 01236 exp(doublereal), log(doublereal), d_lg10(doublereal *), asin( 01237 doublereal), acos(doublereal), atan(doublereal), atan2(doublereal, 01238 doublereal), sinh(doublereal), cosh(doublereal), tanh(doublereal) 01239 ; 01240 01241 /* Local variables */ 01242 extern doublereal land_(integer *, doublereal *), mean_(integer *, 01243 doublereal *), derf_(doublereal *), eran_(doublereal *), gran_( 01244 doublereal *, doublereal *), iran_(doublereal *), bool_( 01245 doublereal *), lran_(doublereal *), rect_(doublereal *), 01246 legendre_(doublereal *, doublereal *), uran_(doublereal *), tent_( 01247 doublereal *), step_(doublereal *), bell2_(doublereal *), derfc_( 01248 doublereal *); 01249 static integer ncode; 01250 static doublereal x, y; 01251 extern doublereal hmode_(integer *, doublereal *), lmode_(integer *, 01252 doublereal *); 01253 static integer neval; 01254 extern doublereal lmofn_(integer *, integer *, doublereal *), qginv_( 01255 doublereal *), stdev_(integer *, doublereal *), ztone_(doublereal 01256 *), dbesi0_(doublereal *), dbesi1_(doublereal *), dbesj0_( 01257 doublereal *), dbesj1_(doublereal *), dbesk0_(doublereal *), 01258 dbesk1_(doublereal *); 01259 #define c8_val__ ((char *)equiv_0) 01260 extern doublereal dbesy0_(doublereal *), dbesy1_(doublereal *); 01261 #define r8_val__ (equiv_0) 01262 extern doublereal dgamma_(doublereal *), qg_(doublereal *); 01263 static char cncode[8]; 01264 extern doublereal median_(integer *, doublereal *); 01265 static integer ialpha; 01266 extern doublereal argmax_(integer *, doublereal *), fibntp_(doublereal *, 01267 doublereal *, doublereal *), fibnpt_(doublereal *, doublereal *, 01268 doublereal *), ficotp_(doublereal *, doublereal *, doublereal *, 01269 doublereal *), ficopt_(doublereal *, doublereal *, doublereal *, 01270 doublereal *), fibttp_(doublereal *, doublereal *, doublereal *), 01271 argnum_(integer *, doublereal *), ficttp_(doublereal *, 01272 doublereal *), fictpt_(doublereal *, doublereal *), fifttp_( 01273 doublereal *, doublereal *, doublereal *), fiftpt_(doublereal *, 01274 doublereal *, doublereal *), ficotz_(doublereal *, doublereal *, 01275 doublereal *, doublereal *), fibtpt_(doublereal *, doublereal *, 01276 doublereal *), fibntz_(doublereal *, doublereal *, doublereal *), 01277 figttp_(doublereal *, doublereal *, doublereal *), fibttz_( 01278 doublereal *, doublereal *, doublereal *), ficttz_(doublereal *, 01279 doublereal *), figtpt_(doublereal *, doublereal *, doublereal *), 01280 fifttz_(doublereal *, doublereal *, doublereal *), figttz_( 01281 doublereal *, doublereal *, doublereal *), fipttp_(doublereal *, 01282 doublereal *), fitttp_(doublereal *, doublereal *), fittpt_( 01283 doublereal *, doublereal *), orstat_(integer *, integer *, 01284 doublereal *), fiptpt_(doublereal *, doublereal *), fizttp_( 01285 doublereal *), fiztpt_(doublereal *), fipttz_(doublereal *, 01286 doublereal *), fitttz_(doublereal *, doublereal *), fizttz_( 01287 doublereal *); 01288 static doublereal r8_eval__[128]; 01289 extern doublereal dai_(doublereal *), dbi_(doublereal *, integer *), mad_( 01290 integer *, doublereal *), sem_(integer *, doublereal *); 01291 static integer itm; 01292 extern doublereal lor_(integer *, doublereal *); 01293 static integer ntm; 01294 01295 01296 01297 01298 01299 /* Internal library functions */ 01300 01301 01302 /* External library functions */ 01303 01304 01305 /* Statistics functions (01 Mar 1999 - see parser_int.c) */ 01306 01307 01308 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 01309 */ 01310 01311 /* Parameter adjustments */ 01312 --r8val; 01313 c_code__ -= 8; 01314 01315 /* Function Body */ 01316 if (*num_code__ <= 0) { 01317 ret_val = 0.; 01318 goto L8000; 01319 } 01320 /* ----------------------------------------------------------------------- 01321 */ 01322 ialpha = 'A' - 1; 01323 neval = 0; 01324 ncode = 0; 01325 01326 L1000: 01327 ++ncode; 01328 s_copy(cncode, c_code__ + (ncode << 3), 8L, 8L); 01329 /* ....................................................................... 01330 */ 01331 if (s_cmp(cncode, "PUSHSYM", 8L, 7L) == 0) { 01332 ++neval; 01333 r8_eval__[neval - 1] = r8val[*(unsigned char *)&c_code__[(ncode + 1) * 01334 8] - ialpha]; 01335 ++ncode; 01336 /* ................................................................... 01337 .... */ 01338 } else if (s_cmp(cncode, "PUSHNUM", 8L, 7L) == 0) { 01339 ++neval; 01340 s_copy(c8_val__, c_code__ + (ncode + 1 << 3), 8L, 8L); 01341 r8_eval__[neval - 1] = *r8_val__; 01342 ++ncode; 01343 /* ................................................................... 01344 .... */ 01345 } else if (s_cmp(cncode, "+", 8L, 1L) == 0) { 01346 --neval; 01347 r8_eval__[neval - 1] += r8_eval__[neval]; 01348 /* ................................................................... 01349 .... */ 01350 } else if (s_cmp(cncode, "-", 8L, 1L) == 0) { 01351 --neval; 01352 r8_eval__[neval - 1] -= r8_eval__[neval]; 01353 /* ................................................................... 01354 .... */ 01355 } else if (s_cmp(cncode, "*", 8L, 1L) == 0) { 01356 --neval; 01357 r8_eval__[neval - 1] *= r8_eval__[neval]; 01358 /* ................................................................... 01359 .... */ 01360 } else if (s_cmp(cncode, "/", 8L, 1L) == 0) { 01361 --neval; 01362 if (r8_eval__[neval] != 0.) { 01363 r8_eval__[neval - 1] /= r8_eval__[neval]; 01364 } else { 01365 r8_eval__[neval - 1] = 0.; 01366 } 01367 /* ................................................................... 01368 .... */ 01369 } else if (s_cmp(cncode, "**", 8L, 2L) == 0) { 01370 --neval; 01371 if (r8_eval__[neval - 1] > 0. || r8_eval__[neval - 1] != 0. && 01372 r8_eval__[neval] == d_int(&r8_eval__[neval])) { 01373 r8_eval__[neval - 1] = pow_dd(&r8_eval__[neval - 1], &r8_eval__[ 01374 neval]); 01375 } 01376 /* ................................................................... 01377 .... */ 01378 } else if (s_cmp(cncode, "--", 8L, 2L) == 0) { 01379 r8_eval__[neval - 1] = -r8_eval__[neval - 1]; 01380 /* ................................................................... 01381 .... */ 01382 } else if (s_cmp(cncode, "SIN", 8L, 3L) == 0) { 01383 r8_eval__[neval - 1] = sin(r8_eval__[neval - 1]); 01384 /* ................................................................... 01385 .... */ 01386 } else if (s_cmp(cncode, "SIND", 8L, 4L) == 0) { 01387 r8_eval__[neval - 1] = sin(r8_eval__[neval - 1] * .01745329251994); 01388 /* ................................................................... 01389 .... */ 01390 } else if (s_cmp(cncode, "COS", 8L, 3L) == 0) { 01391 r8_eval__[neval - 1] = cos(r8_eval__[neval - 1]); 01392 /* ................................................................... 01393 .... */ 01394 } else if (s_cmp(cncode, "COSD", 8L, 4L) == 0) { 01395 r8_eval__[neval - 1] = cos(r8_eval__[neval - 1] * .01745329251994); 01396 /* ................................................................... 01397 .... */ 01398 } else if (s_cmp(cncode, "TAN", 8L, 3L) == 0) { 01399 r8_eval__[neval - 1] = tan(r8_eval__[neval - 1]); 01400 /* ................................................................... 01401 .... */ 01402 } else if (s_cmp(cncode, "TAND", 8L, 4L) == 0) { 01403 r8_eval__[neval - 1] = tan(r8_eval__[neval - 1] * .01745329251994); 01404 /* ................................................................... 01405 .... */ 01406 } else if (s_cmp(cncode, "SQRT", 8L, 4L) == 0) { 01407 r8_eval__[neval - 1] = sqrt((d__1 = r8_eval__[neval - 1], abs(d__1))); 01408 /* ................................................................... 01409 .... */ 01410 } else if (s_cmp(cncode, "ABS", 8L, 3L) == 0) { 01411 r8_eval__[neval - 1] = (d__1 = r8_eval__[neval - 1], abs(d__1)); 01412 /* ................................................................... 01413 .... */ 01414 } else if (s_cmp(cncode, "EXP", 8L, 3L) == 0) { 01415 /* Computing MIN */ 01416 d__1 = 87.5, d__2 = r8_eval__[neval - 1]; 01417 r8_eval__[neval - 1] = exp((min(d__1,d__2))); 01418 /* ................................................................... 01419 .... */ 01420 } else if (s_cmp(cncode, "LOG", 8L, 3L) == 0) { 01421 if (r8_eval__[neval - 1] != 0.) { 01422 r8_eval__[neval - 1] = log((d__1 = r8_eval__[neval - 1], abs(d__1) 01423 )); 01424 } 01425 /* ................................................................... 01426 .... */ 01427 } else if (s_cmp(cncode, "LOG10", 8L, 5L) == 0) { 01428 if (r8_eval__[neval - 1] != 0.) { 01429 d__2 = (d__1 = r8_eval__[neval - 1], abs(d__1)); 01430 r8_eval__[neval - 1] = d_lg10(&d__2); 01431 } 01432 /* ................................................................... 01433 .... */ 01434 } else if (s_cmp(cncode, "INT", 8L, 3L) == 0) { 01435 r8_eval__[neval - 1] = d_int(&r8_eval__[neval - 1]); 01436 /* ................................................................... 01437 .... */ 01438 } else if (s_cmp(cncode, "MAX", 8L, 3L) == 0) { 01439 --neval; 01440 /* Computing MAX */ 01441 d__1 = r8_eval__[neval - 1], d__2 = r8_eval__[neval]; 01442 r8_eval__[neval - 1] = max(d__1,d__2); 01443 /* ................................................................... 01444 .... */ 01445 } else if (s_cmp(cncode, "MIN", 8L, 3L) == 0) { 01446 --neval; 01447 /* Computing MIN */ 01448 d__1 = r8_eval__[neval - 1], d__2 = r8_eval__[neval]; 01449 r8_eval__[neval - 1] = min(d__1,d__2); 01450 /* ................................................................... 01451 .... */ 01452 } else if (s_cmp(cncode, "ASIN", 8L, 4L) == 0) { 01453 if ((d__1 = r8_eval__[neval - 1], abs(d__1)) <= 1.) { 01454 r8_eval__[neval - 1] = asin(r8_eval__[neval - 1]); 01455 } 01456 /* ................................................................... 01457 .... */ 01458 } else if (s_cmp(cncode, "ACOS", 8L, 4L) == 0) { 01459 if ((d__1 = r8_eval__[neval - 1], abs(d__1)) <= 1.) { 01460 r8_eval__[neval - 1] = acos(r8_eval__[neval - 1]); 01461 } 01462 /* ................................................................... 01463 .... */ 01464 } else if (s_cmp(cncode, "ATAN", 8L, 4L) == 0) { 01465 r8_eval__[neval - 1] = atan(r8_eval__[neval - 1]); 01466 /* ................................................................... 01467 .... */ 01468 } else if (s_cmp(cncode, "ATAN2", 8L, 5L) == 0) { 01469 --neval; 01470 if (r8_eval__[neval - 1] != 0. && r8_eval__[neval] != 0.) { 01471 r8_eval__[neval - 1] = atan2(r8_eval__[neval - 1], r8_eval__[ 01472 neval]); 01473 } 01474 /* ................................................................... 01475 .... */ 01476 } else if (s_cmp(cncode, "GRAN", 8L, 4L) == 0) { 01477 --neval; 01478 r8_eval__[neval - 1] = gran_(&r8_eval__[neval - 1], &r8_eval__[neval]) 01479 ; 01480 /* ................................................................... 01481 .... */ 01482 } else if (s_cmp(cncode, "URAN", 8L, 4L) == 0) { 01483 r8_eval__[neval - 1] = uran_(&r8_eval__[neval - 1]); 01484 /* ................................................................... 01485 .... */ 01486 } else if (s_cmp(cncode, "IRAN", 8L, 4L) == 0) { 01487 r8_eval__[neval - 1] = iran_(&r8_eval__[neval - 1]); 01488 /* ................................................................... 01489 .... */ 01490 } else if (s_cmp(cncode, "ERAN", 8L, 4L) == 0) { 01491 r8_eval__[neval - 1] = eran_(&r8_eval__[neval - 1]); 01492 /* ................................................................... 01493 .... */ 01494 } else if (s_cmp(cncode, "LRAN", 8L, 4L) == 0) { 01495 r8_eval__[neval - 1] = lran_(&r8_eval__[neval - 1]); 01496 /* ................................................................... 01497 .... */ 01498 } else if (s_cmp(cncode, "PLEG", 8L, 4L) == 0) { 01499 --neval; 01500 r8_eval__[neval - 1] = legendre_(&r8_eval__[neval - 1], &r8_eval__[ 01501 neval]); 01502 /* ................................................................... 01503 .... */ 01504 } else if (s_cmp(cncode, "SINH", 8L, 4L) == 0) { 01505 if ((d__1 = r8_eval__[neval - 1], abs(d__1)) < 87.5f) { 01506 r8_eval__[neval - 1] = sinh(r8_eval__[neval - 1]); 01507 } 01508 /* ................................................................... 01509 .... */ 01510 } else if (s_cmp(cncode, "COSH", 8L, 4L) == 0) { 01511 if ((d__1 = r8_eval__[neval - 1], abs(d__1)) < 87.5f) { 01512 r8_eval__[neval - 1] = cosh(r8_eval__[neval - 1]); 01513 } 01514 /* ................................................................... 01515 .... */ 01516 } else if (s_cmp(cncode, "TANH", 8L, 4L) == 0) { 01517 r8_eval__[neval - 1] = tanh(r8_eval__[neval - 1]); 01518 /* ................................................................... 01519 .... */ 01520 } else if (s_cmp(cncode, "ASINH", 8L, 5L) == 0) { 01521 x = (d__1 = r8_eval__[neval - 1], abs(d__1)); 01522 if (x <= 10.) { 01523 /* Computing 2nd power */ 01524 d__1 = x; 01525 y = x + sqrt(d__1 * d__1 + 1.); 01526 } else { 01527 /* Computing 2nd power */ 01528 d__1 = 1. / x; 01529 y = x * (sqrt(d__1 * d__1 + 1.) + 1.); 01530 } 01531 y = log(y); 01532 if (r8_eval__[neval - 1] < 0.) { 01533 r8_eval__[neval - 1] = -y; 01534 } else { 01535 r8_eval__[neval - 1] = y; 01536 } 01537 /* ................................................................... 01538 .... */ 01539 } else if (s_cmp(cncode, "ACOSH", 8L, 5L) == 0) { 01540 x = r8_eval__[neval - 1]; 01541 if (x >= 1.) { 01542 if (x <= 10.) { 01543 /* Computing 2nd power */ 01544 d__1 = x; 01545 y = x + sqrt(d__1 * d__1 - 1.); 01546 } else { 01547 /* Computing 2nd power */ 01548 d__1 = 1. / x; 01549 y = x * (sqrt(1. - d__1 * d__1) + 1.); 01550 } 01551 r8_eval__[neval - 1] = log(y); 01552 } 01553 /* ................................................................... 01554 .... */ 01555 } else if (s_cmp(cncode, "ATANH", 8L, 5L) == 0) { 01556 x = r8_eval__[neval - 1]; 01557 if (abs(x) < 1.) { 01558 r8_eval__[neval - 1] = log((x + 1.) / (1. - x)) * .5; 01559 } 01560 /* ................................................................... 01561 .... */ 01562 } else if (s_cmp(cncode, "AI", 8L, 2L) == 0) { 01563 r8_eval__[neval - 1] = dai_(&r8_eval__[neval - 1]); 01564 /* ................................................................... 01565 .... */ 01566 } else if (s_cmp(cncode, "BI", 8L, 2L) == 0) { 01567 r8_eval__[neval - 1] = dbi_(&r8_eval__[neval - 1], &c__1); 01568 /* ................................................................... 01569 .... */ 01570 } else if (s_cmp(cncode, "ERF", 8L, 3L) == 0) { 01571 r8_eval__[neval - 1] = derf_(&r8_eval__[neval - 1]); 01572 } else if (s_cmp(cncode, "ERFC", 8L, 4L) == 0) { 01573 r8_eval__[neval - 1] = derfc_(&r8_eval__[neval - 1]); 01574 /* ................................................................... 01575 .... */ 01576 } else if (s_cmp(cncode, "GAMMA", 8L, 5L) == 0) { 01577 r8_eval__[neval - 1] = dgamma_(&r8_eval__[neval - 1]); 01578 /* ................................................................... 01579 .... */ 01580 } else if (s_cmp(cncode, "I0", 8L, 2L) == 0) { 01581 r8_eval__[neval - 1] = dbesi0_(&r8_eval__[neval - 1]); 01582 } else if (s_cmp(cncode, "I1", 8L, 2L) == 0) { 01583 r8_eval__[neval - 1] = dbesi1_(&r8_eval__[neval - 1]); 01584 /* ................................................................... 01585 .... */ 01586 } else if (s_cmp(cncode, "J0", 8L, 2L) == 0) { 01587 r8_eval__[neval - 1] = dbesj0_(&r8_eval__[neval - 1]); 01588 } else if (s_cmp(cncode, "J1", 8L, 2L) == 0) { 01589 r8_eval__[neval - 1] = dbesj1_(&r8_eval__[neval - 1]); 01590 /* ................................................................... 01591 .... */ 01592 } else if (s_cmp(cncode, "K0", 8L, 2L) == 0) { 01593 r8_eval__[neval - 1] = dbesk0_(&r8_eval__[neval - 1]); 01594 } else if (s_cmp(cncode, "K1", 8L, 2L) == 0) { 01595 r8_eval__[neval - 1] = dbesk1_(&r8_eval__[neval - 1]); 01596 /* ................................................................... 01597 .... */ 01598 } else if (s_cmp(cncode, "Y0", 8L, 2L) == 0) { 01599 r8_eval__[neval - 1] = dbesy0_(&r8_eval__[neval - 1]); 01600 } else if (s_cmp(cncode, "Y1", 8L, 2L) == 0) { 01601 r8_eval__[neval - 1] = dbesy1_(&r8_eval__[neval - 1]); 01602 /* ................................................................... 01603 .... */ 01604 } else if (s_cmp(cncode, "QG", 8L, 2L) == 0) { 01605 r8_eval__[neval - 1] = qg_(&r8_eval__[neval - 1]); 01606 } else if (s_cmp(cncode, "QGINV", 8L, 5L) == 0) { 01607 r8_eval__[neval - 1] = qginv_(&r8_eval__[neval - 1]); 01608 } else if (s_cmp(cncode, "BELL2", 8L, 5L) == 0) { 01609 r8_eval__[neval - 1] = bell2_(&r8_eval__[neval - 1]); 01610 } else if (s_cmp(cncode, "RECT", 8L, 4L) == 0) { 01611 r8_eval__[neval - 1] = rect_(&r8_eval__[neval - 1]); 01612 } else if (s_cmp(cncode, "STEP", 8L, 4L) == 0) { 01613 r8_eval__[neval - 1] = step_(&r8_eval__[neval - 1]); 01614 } else if (s_cmp(cncode, "TENT", 8L, 4L) == 0) { 01615 r8_eval__[neval - 1] = tent_(&r8_eval__[neval - 1]); 01616 } else if (s_cmp(cncode, "BOOL", 8L, 4L) == 0) { 01617 r8_eval__[neval - 1] = bool_(&r8_eval__[neval - 1]); 01618 } else if (s_cmp(cncode, "ZTONE", 8L, 5L) == 0) { 01619 r8_eval__[neval - 1] = ztone_(&r8_eval__[neval - 1]); 01620 /* ................................................................... 01621 .... */ 01622 } else if (s_cmp(cncode, "NOTZERO", 8L, 7L) == 0) { 01623 r8_eval__[neval - 1] = bool_(&r8_eval__[neval - 1]); 01624 } else if (s_cmp(cncode, "ISZERO", 8L, 6L) == 0) { 01625 r8_eval__[neval - 1] = 1. - bool_(&r8_eval__[neval - 1]); 01626 } else if (s_cmp(cncode, "EQUALS", 8L, 6L) == 0) { 01627 --neval; 01628 d__1 = r8_eval__[neval - 1] - r8_eval__[neval]; 01629 r8_eval__[neval - 1] = 1. - bool_(&d__1); 01630 } else if (s_cmp(cncode, "ISPOSITI", 8L, 8L) == 0) { 01631 r8_eval__[neval - 1] = step_(&r8_eval__[neval - 1]); 01632 } else if (s_cmp(cncode, "ISNEGATI", 8L, 8L) == 0) { 01633 d__1 = -r8_eval__[neval - 1]; 01634 r8_eval__[neval - 1] = step_(&d__1); 01635 /* ................................................................... 01636 .... */ 01637 } else if (s_cmp(cncode, "AND", 8L, 3L) == 0) { 01638 ntm = (integer) r8_eval__[neval - 1]; 01639 neval -= ntm; 01640 r8_eval__[neval - 1] = land_(&ntm, &r8_eval__[neval - 1]); 01641 } else if (s_cmp(cncode, "MEDIAN", 8L, 6L) == 0) { 01642 ntm = (integer) r8_eval__[neval - 1]; 01643 neval -= ntm; 01644 r8_eval__[neval - 1] = median_(&ntm, &r8_eval__[neval - 1]); 01645 } else if (s_cmp(cncode, "MAD", 8L, 3L) == 0) { 01646 ntm = (integer) r8_eval__[neval - 1]; 01647 neval -= ntm; 01648 r8_eval__[neval - 1] = mad_(&ntm, &r8_eval__[neval - 1]); 01649 } else if (s_cmp(cncode, "MEAN", 8L, 4L) == 0) { 01650 ntm = (integer) r8_eval__[neval - 1]; 01651 neval -= ntm; 01652 r8_eval__[neval - 1] = mean_(&ntm, &r8_eval__[neval - 1]); 01653 } else if (s_cmp(cncode, "STDEV", 8L, 5L) == 0) { 01654 ntm = (integer) r8_eval__[neval - 1]; 01655 neval -= ntm; 01656 r8_eval__[neval - 1] = stdev_(&ntm, &r8_eval__[neval - 1]); 01657 } else if (s_cmp(cncode, "SEM", 8L, 3L) == 0) { 01658 ntm = (integer) r8_eval__[neval - 1]; 01659 neval -= ntm; 01660 r8_eval__[neval - 1] = sem_(&ntm, &r8_eval__[neval - 1]); 01661 } else if (s_cmp(cncode, "ORSTAT", 8L, 6L) == 0) { 01662 ntm = (integer) r8_eval__[neval - 1]; 01663 neval -= ntm; 01664 --ntm; 01665 itm = (integer) r8_eval__[neval - 1]; 01666 r8_eval__[neval - 1] = orstat_(&itm, &ntm, &r8_eval__[neval]); 01667 } else if (s_cmp(cncode, "HMODE", 8L, 5L) == 0) { 01668 ntm = (integer) r8_eval__[neval - 1]; 01669 neval -= ntm; 01670 r8_eval__[neval - 1] = hmode_(&ntm, &r8_eval__[neval - 1]); 01671 } else if (s_cmp(cncode, "LMODE", 8L, 5L) == 0) { 01672 ntm = (integer) r8_eval__[neval - 1]; 01673 neval -= ntm; 01674 r8_eval__[neval - 1] = lmode_(&ntm, &r8_eval__[neval - 1]); 01675 } else if (s_cmp(cncode, "OR", 8L, 2L) == 0) { 01676 ntm = (integer) r8_eval__[neval - 1]; 01677 neval -= ntm; 01678 r8_eval__[neval - 1] = lor_(&ntm, &r8_eval__[neval - 1]); 01679 } else if (s_cmp(cncode, "MOFN", 8L, 4L) == 0) { 01680 ntm = (integer) r8_eval__[neval - 1]; 01681 neval -= ntm; 01682 --ntm; 01683 itm = (integer) r8_eval__[neval - 1]; 01684 r8_eval__[neval - 1] = lmofn_(&itm, &ntm, &r8_eval__[neval]); 01685 } else if (s_cmp(cncode, "ASTEP", 8L, 5L) == 0) { 01686 --neval; 01687 if ((d__1 = r8_eval__[neval - 1], abs(d__1)) > r8_eval__[neval]) { 01688 r8_eval__[neval - 1] = 1.; 01689 } else { 01690 r8_eval__[neval - 1] = 0.; 01691 } 01692 } else if (s_cmp(cncode, "ARGMAX", 8L, 6L) == 0) { 01693 ntm = (integer) r8_eval__[neval - 1]; 01694 neval -= ntm; 01695 r8_eval__[neval - 1] = argmax_(&ntm, &r8_eval__[neval - 1]); 01696 } else if (s_cmp(cncode, "ARGNUM", 8L, 6L) == 0) { 01697 ntm = (integer) r8_eval__[neval - 1]; 01698 neval -= ntm; 01699 r8_eval__[neval - 1] = argnum_(&ntm, &r8_eval__[neval - 1]); 01700 /* ................................................................... 01701 .... */ 01702 } else if (s_cmp(cncode, "FICO_T2P", 8L, 8L) == 0) { 01703 neval += -3; 01704 d__2 = (d__1 = r8_eval__[neval - 1], abs(d__1)); 01705 r8_eval__[neval - 1] = ficotp_(&d__2, &r8_eval__[neval], &r8_eval__[ 01706 neval + 1], &r8_eval__[neval + 2]); 01707 } else if (s_cmp(cncode, "FICO_P2T", 8L, 8L) == 0) { 01708 neval += -3; 01709 r8_eval__[neval - 1] = ficopt_(&r8_eval__[neval - 1], &r8_eval__[ 01710 neval], &r8_eval__[neval + 1], &r8_eval__[neval + 2]); 01711 } else if (s_cmp(cncode, "FICO_T2Z", 8L, 8L) == 0) { 01712 neval += -3; 01713 r8_eval__[neval - 1] = ficotz_(&r8_eval__[neval - 1], &r8_eval__[ 01714 neval], &r8_eval__[neval + 1], &r8_eval__[neval + 2]); 01715 /* ................................................................... 01716 .... */ 01717 } else if (s_cmp(cncode, "FITT_T2P", 8L, 8L) == 0) { 01718 --neval; 01719 d__2 = (d__1 = r8_eval__[neval - 1], abs(d__1)); 01720 r8_eval__[neval - 1] = fitttp_(&d__2, &r8_eval__[neval]); 01721 } else if (s_cmp(cncode, "FITT_P2T", 8L, 8L) == 0) { 01722 --neval; 01723 r8_eval__[neval - 1] = fittpt_(&r8_eval__[neval - 1], &r8_eval__[ 01724 neval]); 01725 } else if (s_cmp(cncode, "FITT_T2Z", 8L, 8L) == 0) { 01726 --neval; 01727 r8_eval__[neval - 1] = fitttz_(&r8_eval__[neval - 1], &r8_eval__[ 01728 neval]); 01729 /* ................................................................... 01730 .... */ 01731 } else if (s_cmp(cncode, "FIFT_T2P", 8L, 8L) == 0) { 01732 neval += -2; 01733 r8_eval__[neval - 1] = fifttp_(&r8_eval__[neval - 1], &r8_eval__[ 01734 neval], &r8_eval__[neval + 1]); 01735 } else if (s_cmp(cncode, "FIFT_P2T", 8L, 8L) == 0) { 01736 neval += -2; 01737 r8_eval__[neval - 1] = fiftpt_(&r8_eval__[neval - 1], &r8_eval__[ 01738 neval], &r8_eval__[neval + 1]); 01739 } else if (s_cmp(cncode, "FIFT_T2Z", 8L, 8L) == 0) { 01740 neval += -2; 01741 r8_eval__[neval - 1] = fifttz_(&r8_eval__[neval - 1], &r8_eval__[ 01742 neval], &r8_eval__[neval + 1]); 01743 /* ................................................................... 01744 .... */ 01745 } else if (s_cmp(cncode, "FIZT_T2P", 8L, 8L) == 0) { 01746 d__2 = (d__1 = r8_eval__[neval - 1], abs(d__1)); 01747 r8_eval__[neval - 1] = fizttp_(&d__2); 01748 } else if (s_cmp(cncode, "FIZT_P2T", 8L, 8L) == 0) { 01749 r8_eval__[neval - 1] = fiztpt_(&r8_eval__[neval - 1]); 01750 } else if (s_cmp(cncode, "FIZT_T2Z", 8L, 8L) == 0) { 01751 r8_eval__[neval - 1] = fizttz_(&r8_eval__[neval - 1]); 01752 /* ................................................................... 01753 .... */ 01754 } else if (s_cmp(cncode, "FICT_T2P", 8L, 8L) == 0) { 01755 --neval; 01756 r8_eval__[neval - 1] = ficttp_(&r8_eval__[neval - 1], &r8_eval__[ 01757 neval]); 01758 } else if (s_cmp(cncode, "FICT_P2T", 8L, 8L) == 0) { 01759 --neval; 01760 r8_eval__[neval - 1] = fictpt_(&r8_eval__[neval - 1], &r8_eval__[ 01761 neval]); 01762 } else if (s_cmp(cncode, "FICT_T2Z", 8L, 8L) == 0) { 01763 --neval; 01764 r8_eval__[neval - 1] = ficttz_(&r8_eval__[neval - 1], &r8_eval__[ 01765 neval]); 01766 /* ................................................................... 01767 .... */ 01768 } else if (s_cmp(cncode, "FIBT_T2P", 8L, 8L) == 0) { 01769 neval += -2; 01770 r8_eval__[neval - 1] = fibttp_(&r8_eval__[neval - 1], &r8_eval__[ 01771 neval], &r8_eval__[neval + 1]); 01772 } else if (s_cmp(cncode, "FIBT_P2T", 8L, 8L) == 0) { 01773 neval += -2; 01774 r8_eval__[neval - 1] = fibtpt_(&r8_eval__[neval - 1], &r8_eval__[ 01775 neval], &r8_eval__[neval + 1]); 01776 } else if (s_cmp(cncode, "FIBT_T2Z", 8L, 8L) == 0) { 01777 neval += -2; 01778 r8_eval__[neval - 1] = fibttz_(&r8_eval__[neval - 1], &r8_eval__[ 01779 neval], &r8_eval__[neval + 1]); 01780 /* ................................................................... 01781 .... */ 01782 } else if (s_cmp(cncode, "FIBN_T2P", 8L, 8L) == 0) { 01783 neval += -2; 01784 r8_eval__[neval - 1] = fibntp_(&r8_eval__[neval - 1], &r8_eval__[ 01785 neval], &r8_eval__[neval + 1]); 01786 } else if (s_cmp(cncode, "FIBN_P2T", 8L, 8L) == 0) { 01787 neval += -2; 01788 r8_eval__[neval - 1] = fibnpt_(&r8_eval__[neval - 1], &r8_eval__[ 01789 neval], &r8_eval__[neval + 1]); 01790 } else if (s_cmp(cncode, "FIBN_T2Z", 8L, 8L) == 0) { 01791 neval += -2; 01792 r8_eval__[neval - 1] = fibntz_(&r8_eval__[neval - 1], &r8_eval__[ 01793 neval], &r8_eval__[neval + 1]); 01794 /* ................................................................... 01795 .... */ 01796 } else if (s_cmp(cncode, "FIGT_T2P", 8L, 8L) == 0) { 01797 neval += -2; 01798 r8_eval__[neval - 1] = figttp_(&r8_eval__[neval - 1], &r8_eval__[ 01799 neval], &r8_eval__[neval + 1]); 01800 } else if (s_cmp(cncode, "FIGT_P2T", 8L, 8L) == 0) { 01801 neval += -2; 01802 r8_eval__[neval - 1] = figtpt_(&r8_eval__[neval - 1], &r8_eval__[ 01803 neval], &r8_eval__[neval + 1]); 01804 } else if (s_cmp(cncode, "FIGT_T2Z", 8L, 8L) == 0) { 01805 neval += -2; 01806 r8_eval__[neval - 1] = figttz_(&r8_eval__[neval - 1], &r8_eval__[ 01807 neval], &r8_eval__[neval + 1]); 01808 /* ................................................................... 01809 .... */ 01810 } else if (s_cmp(cncode, "FIPT_T2P", 8L, 8L) == 0) { 01811 --neval; 01812 r8_eval__[neval - 1] = fipttp_(&r8_eval__[neval - 1], &r8_eval__[ 01813 neval]); 01814 } else if (s_cmp(cncode, "FIPT_P2T", 8L, 8L) == 0) { 01815 --neval; 01816 r8_eval__[neval - 1] = fiptpt_(&r8_eval__[neval - 1], &r8_eval__[ 01817 neval]); 01818 } else if (s_cmp(cncode, "FIPT_T2Z", 8L, 8L) == 0) { 01819 --neval; 01820 r8_eval__[neval - 1] = fipttz_(&r8_eval__[neval - 1], &r8_eval__[ 01821 neval]); 01822 /* ................................................................... 01823 .... */ 01824 } 01825 /* ....................................................................... 01826 */ 01827 if (ncode < *num_code__) { 01828 goto L1000; 01829 } 01830 ret_val = r8_eval__[neval - 1]; 01831 /* ----------------------------------------------------------------------- 01832 */ 01833 L8000: 01834 return ret_val; 01835 } /* pareval_ */ |
|
Definition at line 1844 of file parser.c. References abs, argmax_(), argnum_(), bell2_(), bool_(), c__1, d_int(), d_lg10(), dai_(), dbesi0_(), dbesi1_(), dbesj0_(), dbesj1_(), dbesk0_(), dbesk1_(), dbesy0_(), dbesy1_(), dbi_(), derf_(), derfc_(), dgamma_(), eran_(), gran_(), hmode_(), iran_(), L, land_(), legendre_(), lmode_(), lmofn_(), lor_(), lran_(), mad_(), max, mean_(), median_(), min, orstat_(), pow_dd(), qg_(), qginv_(), rect_(), s_cmp(), s_copy(), sem_(), stdev_(), step_(), tent_(), uran_(), vc, vm, and ztone_(). Referenced by ff_(), and PARSER_evaluate_vector().
01852 { 01853 /* System generated locals */ 01854 integer i__1, i__2, i__3; 01855 doublereal d__1, d__2; 01856 static doublereal equiv_0[1]; 01857 01858 /* Builtin functions */ 01859 /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen); 01860 integer s_cmp(char *, char *, ftnlen, ftnlen); 01861 double d_int(doublereal *), pow_dd(doublereal *, doublereal *), sin( 01862 doublereal), cos(doublereal), tan(doublereal), sqrt(doublereal), 01863 exp(doublereal), log(doublereal), d_lg10(doublereal *), asin( 01864 doublereal), acos(doublereal), atan(doublereal), atan2(doublereal, 01865 doublereal), sinh(doublereal), cosh(doublereal), tanh(doublereal) 01866 ; 01867 01868 /* Local variables */ 01869 extern doublereal land_(integer *, doublereal *), mean_(integer *, 01870 doublereal *), derf_(doublereal *), eran_(doublereal *), gran_( 01871 doublereal *, doublereal *), iran_(doublereal *), bool_( 01872 doublereal *), lran_(doublereal *), rect_(doublereal *); 01873 static doublereal scop[101]; 01874 extern doublereal uran_(doublereal *), legendre_(doublereal *, doublereal 01875 *), tent_(doublereal *), step_(doublereal *), bell2_(doublereal *) 01876 ; 01877 static doublereal r8val[1664] /* was [64][26] */; 01878 extern doublereal derfc_(doublereal *); 01879 static integer ncode; 01880 static doublereal x, y; 01881 extern doublereal hmode_(integer *, doublereal *), lmode_(integer *, 01882 doublereal *); 01883 static integer neval; 01884 extern doublereal lmofn_(integer *, integer *, doublereal *); 01885 static integer ivbot; 01886 extern doublereal qginv_(doublereal *), stdev_(integer *, doublereal *); 01887 static char c2code[8]; 01888 extern doublereal ztone_(doublereal *); 01889 static integer ivtop; 01890 extern doublereal dbesi0_(doublereal *), dbesi1_(doublereal *), dbesj0_( 01891 doublereal *), dbesj1_(doublereal *), dbesk0_(doublereal *), 01892 dbesk1_(doublereal *); 01893 #define c8_val__ ((char *)equiv_0) 01894 extern doublereal dbesy0_(doublereal *), dbesy1_(doublereal *); 01895 #define r8_val__ (equiv_0) 01896 static integer jf; 01897 extern doublereal dgamma_(doublereal *); 01898 static integer ialpha, iv; 01899 static char cncode[8]; 01900 extern doublereal qg_(doublereal *), median_(integer *, doublereal *), 01901 argmax_(integer *, doublereal *), ficotp_(doublereal *, 01902 doublereal *, doublereal *, doublereal *), ficopt_(doublereal *, 01903 doublereal *, doublereal *, doublereal *), argnum_(integer *, 01904 doublereal *), ficttp_(doublereal *, doublereal *), fictpt_( 01905 doublereal *, doublereal *), fifttp_(doublereal *, doublereal *, 01906 doublereal *), fiftpt_(doublereal *, doublereal *, doublereal *), 01907 ficotz_(doublereal *, doublereal *, doublereal *, doublereal *), 01908 fibttp_(doublereal *, doublereal *, doublereal *), fibtpt_( 01909 doublereal *, doublereal *, doublereal *), fibntp_(doublereal *, 01910 doublereal *, doublereal *), fibttz_(doublereal *, doublereal *, 01911 doublereal *), ficttz_(doublereal *, doublereal *), fibnpt_( 01912 doublereal *, doublereal *, doublereal *), fibntz_(doublereal *, 01913 doublereal *, doublereal *), fifttz_(doublereal *, doublereal *, 01914 doublereal *), figttp_(doublereal *, doublereal *, doublereal *), 01915 figtpt_(doublereal *, doublereal *, doublereal *), fitttp_( 01916 doublereal *, doublereal *), fittpt_(doublereal *, doublereal *), 01917 orstat_(integer *, integer *, doublereal *), figttz_(doublereal *, 01918 doublereal *, doublereal *), fipttp_(doublereal *, doublereal *), 01919 fiptpt_(doublereal *, doublereal *), fizttp_(doublereal *), 01920 fiztpt_(doublereal *), fipttz_(doublereal *, doublereal *), 01921 fitttz_(doublereal *, doublereal *), fizttz_(doublereal *); 01922 static doublereal r8_eval__[6464] /* was [64][101] */; 01923 extern doublereal dai_(doublereal *), dbi_(doublereal *, integer *), mad_( 01924 integer *, doublereal *); 01925 static integer ibv; 01926 extern doublereal sem_(integer *, doublereal *); 01927 static integer itm, jtm; 01928 extern doublereal lor_(integer *, doublereal *); 01929 static integer ntm; 01930 01931 01932 /* Vector version of PAREVAL, where VA..VZ with length LVEC */ 01933 /* are supplied as vectors. */ 01934 /* [Modified by Raoqiong Tong, August 1997] */ 01935 01936 01937 01938 01939 /* 14 Jul 1998: add 1D array for stack copy */ 01940 01941 01942 /* Internal library functions */ 01943 01944 01945 /* External library functions */ 01946 01947 01948 /* Statistics functions (01 Mar 1999 - see parser_int.c) */ 01949 01950 01951 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 01952 */ 01953 01954 /* Parameter adjustments */ 01955 c_code__ -= 8; 01956 --vout; 01957 --vz; 01958 --vy; 01959 --vx; 01960 --vw; 01961 --vv; 01962 --vu; 01963 --vt; 01964 --vs; 01965 --vr; 01966 --vq; 01967 --vp; 01968 --vo; 01969 --vn; 01970 --vm; 01971 --vl; 01972 --vk; 01973 --vj; 01974 --vi; 01975 --vh; 01976 --vg; 01977 --vf; 01978 --ve; 01979 --vd; 01980 --vc; 01981 --vb; 01982 --va; 01983 01984 /* Function Body */ 01985 if (*num_code__ <= 0 || *lvec <= 0) { 01986 goto L8000; 01987 } 01988 01989 ialpha = 'A' - 1; 01990 /* ----------------------------------------------------------------------- 01991 */ 01992 i__1 = *lvec - 1; 01993 for (ibv = 0; ibv <= i__1; ibv += 64) { 01994 ivbot = ibv + 1; 01995 ivtop = ibv + 64; 01996 if (ivtop > *lvec) { 01997 ivtop = *lvec; 01998 } 01999 02000 /* cc WRITE(*,9802) IVBOT,IVTOP */ 02001 /* cc9802 FORMAT(' .. PAREVEC: loop from',I5,' to',I5) */ 02002 02003 i__2 = ivtop; 02004 for (iv = ivbot; iv <= i__2; ++iv) { 02005 r8val[iv - ibv - 1] = va[iv]; 02006 /* L100: */ 02007 } 02008 i__2 = ivtop; 02009 for (iv = ivbot; iv <= i__2; ++iv) { 02010 r8val[iv - ibv + 63] = vb[iv]; 02011 /* L101: */ 02012 } 02013 i__2 = ivtop; 02014 for (iv = ivbot; iv <= i__2; ++iv) { 02015 r8val[iv - ibv + 127] = vc[iv]; 02016 /* L102: */ 02017 } 02018 i__2 = ivtop; 02019 for (iv = ivbot; iv <= i__2; ++iv) { 02020 r8val[iv - ibv + 191] = vd[iv]; 02021 /* L103: */ 02022 } 02023 i__2 = ivtop; 02024 for (iv = ivbot; iv <= i__2; ++iv) { 02025 r8val[iv - ibv + 255] = ve[iv]; 02026 /* L104: */ 02027 } 02028 i__2 = ivtop; 02029 for (iv = ivbot; iv <= i__2; ++iv) { 02030 r8val[iv - ibv + 319] = vf[iv]; 02031 /* L105: */ 02032 } 02033 i__2 = ivtop; 02034 for (iv = ivbot; iv <= i__2; ++iv) { 02035 r8val[iv - ibv + 383] = vg[iv]; 02036 /* L106: */ 02037 } 02038 i__2 = ivtop; 02039 for (iv = ivbot; iv <= i__2; ++iv) { 02040 r8val[iv - ibv + 447] = vh[iv]; 02041 /* L107: */ 02042 } 02043 i__2 = ivtop; 02044 for (iv = ivbot; iv <= i__2; ++iv) { 02045 r8val[iv - ibv + 511] = vi[iv]; 02046 /* L108: */ 02047 } 02048 i__2 = ivtop; 02049 for (iv = ivbot; iv <= i__2; ++iv) { 02050 r8val[iv - ibv + 575] = vj[iv]; 02051 /* L109: */ 02052 } 02053 i__2 = ivtop; 02054 for (iv = ivbot; iv <= i__2; ++iv) { 02055 r8val[iv - ibv + 639] = vk[iv]; 02056 /* L110: */ 02057 } 02058 i__2 = ivtop; 02059 for (iv = ivbot; iv <= i__2; ++iv) { 02060 r8val[iv - ibv + 703] = vl[iv]; 02061 /* L111: */ 02062 } 02063 i__2 = ivtop; 02064 for (iv = ivbot; iv <= i__2; ++iv) { 02065 r8val[iv - ibv + 767] = vm[iv]; 02066 /* L112: */ 02067 } 02068 i__2 = ivtop; 02069 for (iv = ivbot; iv <= i__2; ++iv) { 02070 r8val[iv - ibv + 831] = vn[iv]; 02071 /* L113: */ 02072 } 02073 i__2 = ivtop; 02074 for (iv = ivbot; iv <= i__2; ++iv) { 02075 r8val[iv - ibv + 895] = vo[iv]; 02076 /* L114: */ 02077 } 02078 i__2 = ivtop; 02079 for (iv = ivbot; iv <= i__2; ++iv) { 02080 r8val[iv - ibv + 959] = vp[iv]; 02081 /* L115: */ 02082 } 02083 i__2 = ivtop; 02084 for (iv = ivbot; iv <= i__2; ++iv) { 02085 r8val[iv - ibv + 1023] = vq[iv]; 02086 /* L116: */ 02087 } 02088 i__2 = ivtop; 02089 for (iv = ivbot; iv <= i__2; ++iv) { 02090 r8val[iv - ibv + 1087] = vr[iv]; 02091 /* L117: */ 02092 } 02093 i__2 = ivtop; 02094 for (iv = ivbot; iv <= i__2; ++iv) { 02095 r8val[iv - ibv + 1151] = vs[iv]; 02096 /* L118: */ 02097 } 02098 i__2 = ivtop; 02099 for (iv = ivbot; iv <= i__2; ++iv) { 02100 r8val[iv - ibv + 1215] = vt[iv]; 02101 /* L119: */ 02102 } 02103 i__2 = ivtop; 02104 for (iv = ivbot; iv <= i__2; ++iv) { 02105 r8val[iv - ibv + 1279] = vu[iv]; 02106 /* L120: */ 02107 } 02108 i__2 = ivtop; 02109 for (iv = ivbot; iv <= i__2; ++iv) { 02110 r8val[iv - ibv + 1343] = vv[iv]; 02111 /* L121: */ 02112 } 02113 i__2 = ivtop; 02114 for (iv = ivbot; iv <= i__2; ++iv) { 02115 r8val[iv - ibv + 1407] = vw[iv]; 02116 /* L122: */ 02117 } 02118 i__2 = ivtop; 02119 for (iv = ivbot; iv <= i__2; ++iv) { 02120 r8val[iv - ibv + 1471] = vx[iv]; 02121 /* L123: */ 02122 } 02123 i__2 = ivtop; 02124 for (iv = ivbot; iv <= i__2; ++iv) { 02125 r8val[iv - ibv + 1535] = vy[iv]; 02126 /* L124: */ 02127 } 02128 i__2 = ivtop; 02129 for (iv = ivbot; iv <= i__2; ++iv) { 02130 r8val[iv - ibv + 1599] = vz[iv]; 02131 /* L125: */ 02132 } 02133 02134 neval = 0; 02135 ncode = 0; 02136 02137 L1000: 02138 ++ncode; 02139 s_copy(cncode, c_code__ + (ncode << 3), 8L, 8L); 02140 /* cc WRITE(*,9803) CNCODE */ 02141 /* cc9803 FORMAT(' .. PAREVEC: opcode=',A) */ 02142 /* ................................................................... 02143 .... */ 02144 if (s_cmp(cncode, "PUSHSYM", 8L, 7L) == 0) { 02145 jf = *(unsigned char *)&c_code__[(ncode + 1) * 8] - ialpha; 02146 if (ncode + 2 <= *num_code__) { 02147 s_copy(c2code, c_code__ + (ncode + 2 << 3), 8L, 8L); 02148 } else { 02149 s_copy(c2code, "q", 8L, 1L); 02150 } 02151 if (s_cmp(c2code, "+", 8L, 1L) == 0) { 02152 ncode += 2; 02153 i__2 = ivtop; 02154 for (iv = ivbot; iv <= i__2; ++iv) { 02155 r8_eval__[iv - ibv + (neval << 6) - 65] += r8val[iv - ibv 02156 + (jf << 6) - 65]; 02157 } 02158 } else if (s_cmp(c2code, "-", 8L, 1L) == 0) { 02159 ncode += 2; 02160 i__2 = ivtop; 02161 for (iv = ivbot; iv <= i__2; ++iv) { 02162 r8_eval__[iv - ibv + (neval << 6) - 65] -= r8val[iv - ibv 02163 + (jf << 6) - 65]; 02164 } 02165 } else if (s_cmp(c2code, "*", 8L, 1L) == 0) { 02166 ncode += 2; 02167 i__2 = ivtop; 02168 for (iv = ivbot; iv <= i__2; ++iv) { 02169 r8_eval__[iv - ibv + (neval << 6) - 65] *= r8val[iv - ibv 02170 + (jf << 6) - 65]; 02171 } 02172 } else if (s_cmp(c2code, "/", 8L, 1L) == 0) { 02173 ncode += 2; 02174 i__2 = ivtop; 02175 for (iv = ivbot; iv <= i__2; ++iv) { 02176 if (r8val[iv - ibv + (jf << 6) - 65] != 0.) { 02177 r8_eval__[iv - ibv + (neval << 6) - 65] /= r8val[iv - 02178 ibv + (jf << 6) - 65]; 02179 } else { 02180 r8_eval__[iv - ibv + (neval << 6) - 65] = 0.; 02181 } 02182 } 02183 } else { 02184 ++neval; 02185 ++ncode; 02186 i__2 = ivtop; 02187 for (iv = ivbot; iv <= i__2; ++iv) { 02188 r8_eval__[iv - ibv + (neval << 6) - 65] = r8val[iv - ibv 02189 + (jf << 6) - 65]; 02190 } 02191 } 02192 /* ............................................................... 02193 ........ */ 02194 } else if (s_cmp(cncode, "PUSHNUM", 8L, 7L) == 0) { 02195 s_copy(c8_val__, c_code__ + (ncode + 1 << 3), 8L, 8L); 02196 if (ncode + 2 <= *num_code__) { 02197 s_copy(c2code, c_code__ + (ncode + 2 << 3), 8L, 8L); 02198 } else { 02199 s_copy(c2code, "q", 8L, 1L); 02200 } 02201 if (s_cmp(c2code, "+", 8L, 1L) == 0) { 02202 ncode += 2; 02203 i__2 = ivtop; 02204 for (iv = ivbot; iv <= i__2; ++iv) { 02205 r8_eval__[iv - ibv + (neval << 6) - 65] += *r8_val__; 02206 } 02207 } else if (s_cmp(c2code, "-", 8L, 1L) == 0) { 02208 ncode += 2; 02209 i__2 = ivtop; 02210 for (iv = ivbot; iv <= i__2; ++iv) { 02211 r8_eval__[iv - ibv + (neval << 6) - 65] -= *r8_val__; 02212 } 02213 } else if (s_cmp(c2code, "*", 8L, 1L) == 0) { 02214 ncode += 2; 02215 i__2 = ivtop; 02216 for (iv = ivbot; iv <= i__2; ++iv) { 02217 r8_eval__[iv - ibv + (neval << 6) - 65] *= *r8_val__; 02218 } 02219 } else if (s_cmp(c2code, "/", 8L, 1L) == 0) { 02220 ncode += 2; 02221 if (*r8_val__ != 0.) { 02222 *r8_val__ = 1. / *r8_val__; 02223 i__2 = ivtop; 02224 for (iv = ivbot; iv <= i__2; ++iv) { 02225 r8_eval__[iv - ibv + (neval << 6) - 65] *= *r8_val__; 02226 } 02227 } else { 02228 i__2 = ivtop; 02229 for (iv = ivbot; iv <= i__2; ++iv) { 02230 r8_eval__[iv - ibv + (neval << 6) - 65] = 0.; 02231 } 02232 } 02233 } else { 02234 ++ncode; 02235 ++neval; 02236 i__2 = ivtop; 02237 for (iv = ivbot; iv <= i__2; ++iv) { 02238 r8_eval__[iv - ibv + (neval << 6) - 65] = *r8_val__; 02239 } 02240 } 02241 /* ............................................................... 02242 ........ */ 02243 } else if (s_cmp(cncode, "+", 8L, 1L) == 0) { 02244 --neval; 02245 i__2 = ivtop; 02246 for (iv = ivbot; iv <= i__2; ++iv) { 02247 r8_eval__[iv - ibv + (neval << 6) - 65] += r8_eval__[iv - ibv 02248 + (neval + 1 << 6) - 65]; 02249 } 02250 /* ............................................................... 02251 ........ */ 02252 } else if (s_cmp(cncode, "-", 8L, 1L) == 0) { 02253 --neval; 02254 i__2 = ivtop; 02255 for (iv = ivbot; iv <= i__2; ++iv) { 02256 r8_eval__[iv - ibv + (neval << 6) - 65] -= r8_eval__[iv - ibv 02257 + (neval + 1 << 6) - 65]; 02258 } 02259 /* ............................................................... 02260 ........ */ 02261 } else if (s_cmp(cncode, "*", 8L, 1L) == 0) { 02262 --neval; 02263 i__2 = ivtop; 02264 for (iv = ivbot; iv <= i__2; ++iv) { 02265 r8_eval__[iv - ibv + (neval << 6) - 65] *= r8_eval__[iv - ibv 02266 + (neval + 1 << 6) - 65]; 02267 } 02268 /* ............................................................... 02269 ........ */ 02270 } else if (s_cmp(cncode, "/", 8L, 1L) == 0) { 02271 --neval; 02272 i__2 = ivtop; 02273 for (iv = ivbot; iv <= i__2; ++iv) { 02274 if (r8_eval__[iv - ibv + (neval + 1 << 6) - 65] != 0.) { 02275 r8_eval__[iv - ibv + (neval << 6) - 65] /= r8_eval__[iv - 02276 ibv + (neval + 1 << 6) - 65]; 02277 } else { 02278 r8_eval__[iv - ibv + (neval << 6) - 65] = 0.; 02279 } 02280 } 02281 /* ............................................................... 02282 ........ */ 02283 } else if (s_cmp(cncode, "**", 8L, 2L) == 0) { 02284 --neval; 02285 i__2 = ivtop; 02286 for (iv = ivbot; iv <= i__2; ++iv) { 02287 if (r8_eval__[iv - ibv + (neval << 6) - 65] > 0. || r8_eval__[ 02288 iv - ibv + (neval << 6) - 65] != 0. && r8_eval__[iv - 02289 ibv + (neval + 1 << 6) - 65] == d_int(&r8_eval__[iv - 02290 ibv + (neval + 1 << 6) - 65])) { 02291 r8_eval__[iv - ibv + (neval << 6) - 65] = pow_dd(& 02292 r8_eval__[iv - ibv + (neval << 6) - 65], & 02293 r8_eval__[iv - ibv + (neval + 1 << 6) - 65]); 02294 } 02295 } 02296 /* ............................................................... 02297 ........ */ 02298 } else if (s_cmp(cncode, "--", 8L, 2L) == 0) { 02299 i__2 = ivtop; 02300 for (iv = ivbot; iv <= i__2; ++iv) { 02301 r8_eval__[iv - ibv + (neval << 6) - 65] = -r8_eval__[iv - ibv 02302 + (neval << 6) - 65]; 02303 } 02304 /* ............................................................... 02305 ........ */ 02306 } else if (s_cmp(cncode, "SIN", 8L, 3L) == 0) { 02307 i__2 = ivtop; 02308 for (iv = ivbot; iv <= i__2; ++iv) { 02309 r8_eval__[iv - ibv + (neval << 6) - 65] = sin(r8_eval__[iv - 02310 ibv + (neval << 6) - 65]); 02311 } 02312 /* ............................................................... 02313 ........ */ 02314 } else if (s_cmp(cncode, "SIND", 8L, 4L) == 0) { 02315 i__2 = ivtop; 02316 for (iv = ivbot; iv <= i__2; ++iv) { 02317 r8_eval__[iv - ibv + (neval << 6) - 65] = sin(r8_eval__[iv - 02318 ibv + (neval << 6) - 65] * .01745329251994); 02319 } 02320 /* ............................................................... 02321 ........ */ 02322 } else if (s_cmp(cncode, "COS", 8L, 3L) == 0) { 02323 i__2 = ivtop; 02324 for (iv = ivbot; iv <= i__2; ++iv) { 02325 r8_eval__[iv - ibv + (neval << 6) - 65] = cos(r8_eval__[iv - 02326 ibv + (neval << 6) - 65]); 02327 } 02328 /* ............................................................... 02329 ........ */ 02330 } else if (s_cmp(cncode, "COSD", 8L, 4L) == 0) { 02331 i__2 = ivtop; 02332 for (iv = ivbot; iv <= i__2; ++iv) { 02333 r8_eval__[iv - ibv + (neval << 6) - 65] = cos(r8_eval__[iv - 02334 ibv + (neval << 6) - 65] * .01745329251994); 02335 } 02336 /* ............................................................... 02337 ........ */ 02338 } else if (s_cmp(cncode, "TAN", 8L, 3L) == 0) { 02339 i__2 = ivtop; 02340 for (iv = ivbot; iv <= i__2; ++iv) { 02341 r8_eval__[iv - ibv + (neval << 6) - 65] = tan(r8_eval__[iv - 02342 ibv + (neval << 6) - 65]); 02343 } 02344 /* ............................................................... 02345 ........ */ 02346 } else if (s_cmp(cncode, "TAND", 8L, 4L) == 0) { 02347 i__2 = ivtop; 02348 for (iv = ivbot; iv <= i__2; ++iv) { 02349 r8_eval__[iv - ibv + (neval << 6) - 65] = tan(r8_eval__[iv - 02350 ibv + (neval << 6) - 65] * .01745329251994); 02351 } 02352 /* ............................................................... 02353 ........ */ 02354 } else if (s_cmp(cncode, "SQRT", 8L, 4L) == 0) { 02355 i__2 = ivtop; 02356 for (iv = ivbot; iv <= i__2; ++iv) { 02357 r8_eval__[iv - ibv + (neval << 6) - 65] = sqrt((d__1 = 02358 r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1))); 02359 } 02360 /* ............................................................... 02361 ........ */ 02362 } else if (s_cmp(cncode, "ABS", 8L, 3L) == 0) { 02363 i__2 = ivtop; 02364 for (iv = ivbot; iv <= i__2; ++iv) { 02365 /* cc WRITE(*,9809) IV */ 02366 /* cc9809 FORMAT(' about to ABS #',I5) */ 02367 r8_eval__[iv - ibv + (neval << 6) - 65] = (d__1 = r8_eval__[ 02368 iv - ibv + (neval << 6) - 65], abs(d__1)); 02369 } 02370 /* ............................................................... 02371 ........ */ 02372 } else if (s_cmp(cncode, "EXP", 8L, 3L) == 0) { 02373 i__2 = ivtop; 02374 for (iv = ivbot; iv <= i__2; ++iv) { 02375 /* Computing MIN */ 02376 d__1 = 87.5f, d__2 = r8_eval__[iv - ibv + (neval << 6) - 65]; 02377 r8_eval__[iv - ibv + (neval << 6) - 65] = exp((min(d__1,d__2)) 02378 ); 02379 } 02380 /* ............................................................... 02381 ........ */ 02382 } else if (s_cmp(cncode, "LOG", 8L, 3L) == 0) { 02383 i__2 = ivtop; 02384 for (iv = ivbot; iv <= i__2; ++iv) { 02385 if (r8_eval__[iv - ibv + (neval << 6) - 65] != 0.) { 02386 r8_eval__[iv - ibv + (neval << 6) - 65] = log((d__1 = 02387 r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02388 )); 02389 } 02390 } 02391 /* ............................................................... 02392 ........ */ 02393 } else if (s_cmp(cncode, "LOG10", 8L, 5L) == 0) { 02394 i__2 = ivtop; 02395 for (iv = ivbot; iv <= i__2; ++iv) { 02396 if (r8_eval__[iv - ibv + (neval << 6) - 65] != 0.) { 02397 d__2 = (d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], 02398 abs(d__1)); 02399 r8_eval__[iv - ibv + (neval << 6) - 65] = d_lg10(&d__2); 02400 } 02401 } 02402 /* ............................................................... 02403 ........ */ 02404 } else if (s_cmp(cncode, "INT", 8L, 3L) == 0) { 02405 i__2 = ivtop; 02406 for (iv = ivbot; iv <= i__2; ++iv) { 02407 r8_eval__[iv - ibv + (neval << 6) - 65] = d_int(&r8_eval__[iv 02408 - ibv + (neval << 6) - 65]); 02409 } 02410 /* ............................................................... 02411 ........ */ 02412 } else if (s_cmp(cncode, "MAX", 8L, 3L) == 0) { 02413 --neval; 02414 i__2 = ivtop; 02415 for (iv = ivbot; iv <= i__2; ++iv) { 02416 /* Computing MAX */ 02417 d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], d__2 = 02418 r8_eval__[iv - ibv + (neval + 1 << 6) - 65]; 02419 r8_eval__[iv - ibv + (neval << 6) - 65] = max(d__1,d__2); 02420 } 02421 /* ............................................................... 02422 ........ */ 02423 } else if (s_cmp(cncode, "MIN", 8L, 3L) == 0) { 02424 --neval; 02425 i__2 = ivtop; 02426 for (iv = ivbot; iv <= i__2; ++iv) { 02427 /* Computing MIN */ 02428 d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], d__2 = 02429 r8_eval__[iv - ibv + (neval + 1 << 6) - 65]; 02430 r8_eval__[iv - ibv + (neval << 6) - 65] = min(d__1,d__2); 02431 } 02432 /* ............................................................... 02433 ........ */ 02434 } else if (s_cmp(cncode, "ASIN", 8L, 4L) == 0) { 02435 i__2 = ivtop; 02436 for (iv = ivbot; iv <= i__2; ++iv) { 02437 if ((d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02438 ) <= 1.) { 02439 r8_eval__[iv - ibv + (neval << 6) - 65] = asin(r8_eval__[ 02440 iv - ibv + (neval << 6) - 65]); 02441 } 02442 } 02443 /* ............................................................... 02444 ........ */ 02445 } else if (s_cmp(cncode, "ACOS", 8L, 4L) == 0) { 02446 i__2 = ivtop; 02447 for (iv = ivbot; iv <= i__2; ++iv) { 02448 if ((d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02449 ) <= 1.) { 02450 r8_eval__[iv - ibv + (neval << 6) - 65] = acos(r8_eval__[ 02451 iv - ibv + (neval << 6) - 65]); 02452 } 02453 } 02454 /* ............................................................... 02455 ........ */ 02456 } else if (s_cmp(cncode, "ATAN", 8L, 4L) == 0) { 02457 i__2 = ivtop; 02458 for (iv = ivbot; iv <= i__2; ++iv) { 02459 r8_eval__[iv - ibv + (neval << 6) - 65] = atan(r8_eval__[iv - 02460 ibv + (neval << 6) - 65]); 02461 } 02462 /* ............................................................... 02463 ........ */ 02464 } else if (s_cmp(cncode, "ATAN2", 8L, 5L) == 0) { 02465 --neval; 02466 i__2 = ivtop; 02467 for (iv = ivbot; iv <= i__2; ++iv) { 02468 if (r8_eval__[iv - ibv + (neval << 6) - 65] != 0. && 02469 r8_eval__[iv - ibv + (neval + 1 << 6) - 65] != 0.) { 02470 r8_eval__[iv - ibv + (neval << 6) - 65] = atan2(r8_eval__[ 02471 iv - ibv + (neval << 6) - 65], r8_eval__[iv - ibv 02472 + (neval + 1 << 6) - 65]); 02473 } 02474 } 02475 /* ............................................................... 02476 ........ */ 02477 } else if (s_cmp(cncode, "GRAN", 8L, 4L) == 0) { 02478 --neval; 02479 i__2 = ivtop; 02480 for (iv = ivbot; iv <= i__2; ++iv) { 02481 r8_eval__[iv - ibv + (neval << 6) - 65] = gran_(&r8_eval__[iv 02482 - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 02483 neval + 1 << 6) - 65]); 02484 } 02485 /* ............................................................... 02486 ........ */ 02487 } else if (s_cmp(cncode, "URAN", 8L, 4L) == 0) { 02488 i__2 = ivtop; 02489 for (iv = ivbot; iv <= i__2; ++iv) { 02490 r8_eval__[iv - ibv + (neval << 6) - 65] = uran_(&r8_eval__[iv 02491 - ibv + (neval << 6) - 65]); 02492 } 02493 /* ............................................................... 02494 ........ */ 02495 } else if (s_cmp(cncode, "IRAN", 8L, 4L) == 0) { 02496 i__2 = ivtop; 02497 for (iv = ivbot; iv <= i__2; ++iv) { 02498 r8_eval__[iv - ibv + (neval << 6) - 65] = iran_(&r8_eval__[iv 02499 - ibv + (neval << 6) - 65]); 02500 } 02501 /* ............................................................... 02502 ........ */ 02503 } else if (s_cmp(cncode, "ERAN", 8L, 4L) == 0) { 02504 i__2 = ivtop; 02505 for (iv = ivbot; iv <= i__2; ++iv) { 02506 r8_eval__[iv - ibv + (neval << 6) - 65] = eran_(&r8_eval__[iv 02507 - ibv + (neval << 6) - 65]); 02508 } 02509 /* ............................................................... 02510 ........ */ 02511 } else if (s_cmp(cncode, "LRAN", 8L, 4L) == 0) { 02512 i__2 = ivtop; 02513 for (iv = ivbot; iv <= i__2; ++iv) { 02514 r8_eval__[iv - ibv + (neval << 6) - 65] = lran_(&r8_eval__[iv 02515 - ibv + (neval << 6) - 65]); 02516 } 02517 /* ............................................................... 02518 ........ */ 02519 } else if (s_cmp(cncode, "PLEG", 8L, 4L) == 0) { 02520 --neval; 02521 i__2 = ivtop; 02522 for (iv = ivbot; iv <= i__2; ++iv) { 02523 r8_eval__[iv - ibv + (neval << 6) - 65] = legendre_(& 02524 r8_eval__[iv - ibv + (neval << 6) - 65], &r8_eval__[ 02525 iv - ibv + (neval + 1 << 6) - 65]); 02526 } 02527 /* ............................................................... 02528 ........ */ 02529 } else if (s_cmp(cncode, "SINH", 8L, 4L) == 0) { 02530 i__2 = ivtop; 02531 for (iv = ivbot; iv <= i__2; ++iv) { 02532 if ((d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02533 ) < 87.5f) { 02534 r8_eval__[iv - ibv + (neval << 6) - 65] = sinh(r8_eval__[ 02535 iv - ibv + (neval << 6) - 65]); 02536 } 02537 } 02538 /* ............................................................... 02539 ........ */ 02540 } else if (s_cmp(cncode, "COSH", 8L, 4L) == 0) { 02541 i__2 = ivtop; 02542 for (iv = ivbot; iv <= i__2; ++iv) { 02543 if ((d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02544 ) < 87.5f) { 02545 r8_eval__[iv - ibv + (neval << 6) - 65] = cosh(r8_eval__[ 02546 iv - ibv + (neval << 6) - 65]); 02547 } 02548 } 02549 /* ............................................................... 02550 ........ */ 02551 } else if (s_cmp(cncode, "TANH", 8L, 4L) == 0) { 02552 i__2 = ivtop; 02553 for (iv = ivbot; iv <= i__2; ++iv) { 02554 r8_eval__[iv - ibv + (neval << 6) - 65] = tanh(r8_eval__[iv - 02555 ibv + (neval << 6) - 65]); 02556 } 02557 /* ............................................................... 02558 ........ */ 02559 } else if (s_cmp(cncode, "ASINH", 8L, 5L) == 0) { 02560 i__2 = ivtop; 02561 for (iv = ivbot; iv <= i__2; ++iv) { 02562 x = (d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02563 ); 02564 if (x <= 10.) { 02565 /* Computing 2nd power */ 02566 d__1 = x; 02567 y = x + sqrt(d__1 * d__1 + 1.); 02568 } else { 02569 /* Computing 2nd power */ 02570 d__1 = 1. / x; 02571 y = x * (sqrt(d__1 * d__1 + 1.) + 1.); 02572 } 02573 y = log(y); 02574 if (r8_eval__[iv - ibv + (neval << 6) - 65] < 0.) { 02575 r8_eval__[iv - ibv + (neval << 6) - 65] = -y; 02576 } else { 02577 r8_eval__[iv - ibv + (neval << 6) - 65] = y; 02578 } 02579 } 02580 /* ............................................................... 02581 ........ */ 02582 } else if (s_cmp(cncode, "ACOSH", 8L, 5L) == 0) { 02583 i__2 = ivtop; 02584 for (iv = ivbot; iv <= i__2; ++iv) { 02585 x = r8_eval__[iv - ibv + (neval << 6) - 65]; 02586 if (x >= 1.) { 02587 if (x <= 10.) { 02588 /* Computing 2nd power */ 02589 d__1 = x; 02590 y = x + sqrt(d__1 * d__1 - 1.); 02591 } else { 02592 /* Computing 2nd power */ 02593 d__1 = 1. / x; 02594 y = x * (sqrt(1. - d__1 * d__1) + 1.); 02595 } 02596 r8_eval__[iv - ibv + (neval << 6) - 65] = log(y); 02597 } 02598 } 02599 /* ............................................................... 02600 ........ */ 02601 } else if (s_cmp(cncode, "ATANH", 8L, 5L) == 0) { 02602 i__2 = ivtop; 02603 for (iv = ivbot; iv <= i__2; ++iv) { 02604 x = r8_eval__[iv - ibv + (neval << 6) - 65]; 02605 if (abs(x) < 1.) { 02606 r8_eval__[iv - ibv + (neval << 6) - 65] = log((x + 1.) / ( 02607 1. - x)) * .5; 02608 } 02609 } 02610 /* ............................................................... 02611 ........ */ 02612 } else if (s_cmp(cncode, "AI", 8L, 2L) == 0) { 02613 i__2 = ivtop; 02614 for (iv = ivbot; iv <= i__2; ++iv) { 02615 r8_eval__[iv - ibv + (neval << 6) - 65] = dai_(&r8_eval__[iv 02616 - ibv + (neval << 6) - 65]); 02617 } 02618 /* ............................................................... 02619 ........ */ 02620 } else if (s_cmp(cncode, "BI", 8L, 2L) == 0) { 02621 i__2 = ivtop; 02622 for (iv = ivbot; iv <= i__2; ++iv) { 02623 r8_eval__[iv - ibv + (neval << 6) - 65] = dbi_(&r8_eval__[iv 02624 - ibv + (neval << 6) - 65], &c__1); 02625 } 02626 /* ............................................................... 02627 ........ */ 02628 } else if (s_cmp(cncode, "ERF", 8L, 3L) == 0) { 02629 i__2 = ivtop; 02630 for (iv = ivbot; iv <= i__2; ++iv) { 02631 r8_eval__[iv - ibv + (neval << 6) - 65] = derf_(&r8_eval__[iv 02632 - ibv + (neval << 6) - 65]); 02633 } 02634 } else if (s_cmp(cncode, "ERFC", 8L, 4L) == 0) { 02635 i__2 = ivtop; 02636 for (iv = ivbot; iv <= i__2; ++iv) { 02637 r8_eval__[iv - ibv + (neval << 6) - 65] = derfc_(&r8_eval__[ 02638 iv - ibv + (neval << 6) - 65]); 02639 } 02640 /* ............................................................... 02641 ........ */ 02642 } else if (s_cmp(cncode, "GAMMA", 8L, 5L) == 0) { 02643 i__2 = ivtop; 02644 for (iv = ivbot; iv <= i__2; ++iv) { 02645 r8_eval__[iv - ibv + (neval << 6) - 65] = dgamma_(&r8_eval__[ 02646 iv - ibv + (neval << 6) - 65]); 02647 } 02648 /* ............................................................... 02649 ........ */ 02650 } else if (s_cmp(cncode, "I0", 8L, 2L) == 0) { 02651 i__2 = ivtop; 02652 for (iv = ivbot; iv <= i__2; ++iv) { 02653 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesi0_(&r8_eval__[ 02654 iv - ibv + (neval << 6) - 65]); 02655 } 02656 } else if (s_cmp(cncode, "I1", 8L, 2L) == 0) { 02657 i__2 = ivtop; 02658 for (iv = ivbot; iv <= i__2; ++iv) { 02659 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesi1_(&r8_eval__[ 02660 iv - ibv + (neval << 6) - 65]); 02661 } 02662 /* ............................................................... 02663 ........ */ 02664 } else if (s_cmp(cncode, "J0", 8L, 2L) == 0) { 02665 i__2 = ivtop; 02666 for (iv = ivbot; iv <= i__2; ++iv) { 02667 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesj0_(&r8_eval__[ 02668 iv - ibv + (neval << 6) - 65]); 02669 } 02670 } else if (s_cmp(cncode, "J1", 8L, 2L) == 0) { 02671 i__2 = ivtop; 02672 for (iv = ivbot; iv <= i__2; ++iv) { 02673 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesj1_(&r8_eval__[ 02674 iv - ibv + (neval << 6) - 65]); 02675 } 02676 /* ............................................................... 02677 ........ */ 02678 } else if (s_cmp(cncode, "K0", 8L, 2L) == 0) { 02679 i__2 = ivtop; 02680 for (iv = ivbot; iv <= i__2; ++iv) { 02681 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesk0_(&r8_eval__[ 02682 iv - ibv + (neval << 6) - 65]); 02683 } 02684 } else if (s_cmp(cncode, "K1", 8L, 2L) == 0) { 02685 i__2 = ivtop; 02686 for (iv = ivbot; iv <= i__2; ++iv) { 02687 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesk1_(&r8_eval__[ 02688 iv - ibv + (neval << 6) - 65]); 02689 } 02690 /* ............................................................... 02691 ........ */ 02692 } else if (s_cmp(cncode, "Y0", 8L, 2L) == 0) { 02693 i__2 = ivtop; 02694 for (iv = ivbot; iv <= i__2; ++iv) { 02695 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesy0_(&r8_eval__[ 02696 iv - ibv + (neval << 6) - 65]); 02697 } 02698 } else if (s_cmp(cncode, "Y1", 8L, 2L) == 0) { 02699 i__2 = ivtop; 02700 for (iv = ivbot; iv <= i__2; ++iv) { 02701 r8_eval__[iv - ibv + (neval << 6) - 65] = dbesy1_(&r8_eval__[ 02702 iv - ibv + (neval << 6) - 65]); 02703 } 02704 /* ............................................................... 02705 ........ */ 02706 } else if (s_cmp(cncode, "QG", 8L, 2L) == 0) { 02707 i__2 = ivtop; 02708 for (iv = ivbot; iv <= i__2; ++iv) { 02709 r8_eval__[iv - ibv + (neval << 6) - 65] = qg_(&r8_eval__[iv - 02710 ibv + (neval << 6) - 65]); 02711 } 02712 } else if (s_cmp(cncode, "QGINV", 8L, 5L) == 0) { 02713 i__2 = ivtop; 02714 for (iv = ivbot; iv <= i__2; ++iv) { 02715 r8_eval__[iv - ibv + (neval << 6) - 65] = qginv_(&r8_eval__[ 02716 iv - ibv + (neval << 6) - 65]); 02717 } 02718 } else if (s_cmp(cncode, "BELL2", 8L, 5L) == 0) { 02719 i__2 = ivtop; 02720 for (iv = ivbot; iv <= i__2; ++iv) { 02721 r8_eval__[iv - ibv + (neval << 6) - 65] = bell2_(&r8_eval__[ 02722 iv - ibv + (neval << 6) - 65]); 02723 } 02724 } else if (s_cmp(cncode, "RECT", 8L, 4L) == 0) { 02725 i__2 = ivtop; 02726 for (iv = ivbot; iv <= i__2; ++iv) { 02727 r8_eval__[iv - ibv + (neval << 6) - 65] = rect_(&r8_eval__[iv 02728 - ibv + (neval << 6) - 65]); 02729 } 02730 } else if (s_cmp(cncode, "STEP", 8L, 4L) == 0) { 02731 i__2 = ivtop; 02732 for (iv = ivbot; iv <= i__2; ++iv) { 02733 r8_eval__[iv - ibv + (neval << 6) - 65] = step_(&r8_eval__[iv 02734 - ibv + (neval << 6) - 65]); 02735 } 02736 } else if (s_cmp(cncode, "TENT", 8L, 4L) == 0) { 02737 i__2 = ivtop; 02738 for (iv = ivbot; iv <= i__2; ++iv) { 02739 r8_eval__[iv - ibv + (neval << 6) - 65] = tent_(&r8_eval__[iv 02740 - ibv + (neval << 6) - 65]); 02741 } 02742 } else if (s_cmp(cncode, "BOOL", 8L, 4L) == 0) { 02743 i__2 = ivtop; 02744 for (iv = ivbot; iv <= i__2; ++iv) { 02745 r8_eval__[iv - ibv + (neval << 6) - 65] = bool_(&r8_eval__[iv 02746 - ibv + (neval << 6) - 65]); 02747 } 02748 } else if (s_cmp(cncode, "ZTONE", 8L, 5L) == 0) { 02749 i__2 = ivtop; 02750 for (iv = ivbot; iv <= i__2; ++iv) { 02751 r8_eval__[iv - ibv + (neval << 6) - 65] = ztone_(&r8_eval__[ 02752 iv - ibv + (neval << 6) - 65]); 02753 } 02754 /* ............................................................... 02755 ........ */ 02756 } else if (s_cmp(cncode, "NOTZERO", 8L, 7L) == 0) { 02757 i__2 = ivtop; 02758 for (iv = ivbot; iv <= i__2; ++iv) { 02759 r8_eval__[iv - ibv + (neval << 6) - 65] = bool_(&r8_eval__[iv 02760 - ibv + (neval << 6) - 65]); 02761 } 02762 } else if (s_cmp(cncode, "ISZERO", 8L, 6L) == 0) { 02763 i__2 = ivtop; 02764 for (iv = ivbot; iv <= i__2; ++iv) { 02765 r8_eval__[iv - ibv + (neval << 6) - 65] = 1. - bool_(& 02766 r8_eval__[iv - ibv + (neval << 6) - 65]); 02767 } 02768 } else if (s_cmp(cncode, "EQUALS", 8L, 6L) == 0) { 02769 --neval; 02770 i__2 = ivtop; 02771 for (iv = ivbot; iv <= i__2; ++iv) { 02772 d__1 = r8_eval__[iv - ibv + (neval << 6) - 65] - r8_eval__[iv 02773 - ibv + (neval + 1 << 6) - 65]; 02774 r8_eval__[iv - ibv + (neval << 6) - 65] = 1. - bool_(&d__1); 02775 } 02776 } else if (s_cmp(cncode, "ISPOSITI", 8L, 8L) == 0) { 02777 i__2 = ivtop; 02778 for (iv = ivbot; iv <= i__2; ++iv) { 02779 r8_eval__[iv - ibv + (neval << 6) - 65] = step_(&r8_eval__[iv 02780 - ibv + (neval << 6) - 65]); 02781 } 02782 } else if (s_cmp(cncode, "ISNEGATI", 8L, 8L) == 0) { 02783 i__2 = ivtop; 02784 for (iv = ivbot; iv <= i__2; ++iv) { 02785 d__1 = -r8_eval__[iv - ibv + (neval << 6) - 65]; 02786 r8_eval__[iv - ibv + (neval << 6) - 65] = step_(&d__1); 02787 } 02788 /* ............................................................... 02789 ........ */ 02790 } else if (s_cmp(cncode, "AND", 8L, 3L) == 0) { 02791 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02792 neval -= ntm; 02793 i__2 = ivtop; 02794 for (iv = ivbot; iv <= i__2; ++iv) { 02795 i__3 = ntm; 02796 for (jtm = 1; jtm <= i__3; ++jtm) { 02797 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02798 6) - 65]; 02799 } 02800 r8_eval__[iv - ibv + (neval << 6) - 65] = land_(&ntm, scop); 02801 } 02802 } else if (s_cmp(cncode, "MEDIAN", 8L, 6L) == 0) { 02803 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02804 neval -= ntm; 02805 i__2 = ivtop; 02806 for (iv = ivbot; iv <= i__2; ++iv) { 02807 i__3 = ntm; 02808 for (jtm = 1; jtm <= i__3; ++jtm) { 02809 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02810 6) - 65]; 02811 } 02812 r8_eval__[iv - ibv + (neval << 6) - 65] = median_(&ntm, scop); 02813 } 02814 } else if (s_cmp(cncode, "MAD", 8L, 3L) == 0) { 02815 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02816 neval -= ntm; 02817 i__2 = ivtop; 02818 for (iv = ivbot; iv <= i__2; ++iv) { 02819 i__3 = ntm; 02820 for (jtm = 1; jtm <= i__3; ++jtm) { 02821 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02822 6) - 65]; 02823 } 02824 r8_eval__[iv - ibv + (neval << 6) - 65] = mad_(&ntm, scop); 02825 } 02826 } else if (s_cmp(cncode, "MEAN", 8L, 4L) == 0) { 02827 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02828 neval -= ntm; 02829 i__2 = ivtop; 02830 for (iv = ivbot; iv <= i__2; ++iv) { 02831 i__3 = ntm; 02832 for (jtm = 1; jtm <= i__3; ++jtm) { 02833 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02834 6) - 65]; 02835 } 02836 r8_eval__[iv - ibv + (neval << 6) - 65] = mean_(&ntm, scop); 02837 } 02838 } else if (s_cmp(cncode, "STDEV", 8L, 5L) == 0) { 02839 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02840 neval -= ntm; 02841 i__2 = ivtop; 02842 for (iv = ivbot; iv <= i__2; ++iv) { 02843 i__3 = ntm; 02844 for (jtm = 1; jtm <= i__3; ++jtm) { 02845 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02846 6) - 65]; 02847 } 02848 r8_eval__[iv - ibv + (neval << 6) - 65] = stdev_(&ntm, scop); 02849 } 02850 } else if (s_cmp(cncode, "SEM", 8L, 3L) == 0) { 02851 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02852 neval -= ntm; 02853 i__2 = ivtop; 02854 for (iv = ivbot; iv <= i__2; ++iv) { 02855 i__3 = ntm; 02856 for (jtm = 1; jtm <= i__3; ++jtm) { 02857 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02858 6) - 65]; 02859 } 02860 r8_eval__[iv - ibv + (neval << 6) - 65] = sem_(&ntm, scop); 02861 } 02862 } else if (s_cmp(cncode, "ORSTAT", 8L, 6L) == 0) { 02863 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02864 neval -= ntm; 02865 --ntm; 02866 i__2 = ivtop; 02867 for (iv = ivbot; iv <= i__2; ++iv) { 02868 itm = (integer) r8_eval__[iv - ibv + (neval << 6) - 65]; 02869 i__3 = ntm; 02870 for (jtm = 1; jtm <= i__3; ++jtm) { 02871 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm << 6) - 02872 65]; 02873 } 02874 r8_eval__[iv - ibv + (neval << 6) - 65] = orstat_(&itm, &ntm, 02875 scop); 02876 } 02877 } else if (s_cmp(cncode, "HMODE", 8L, 5L) == 0) { 02878 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02879 neval -= ntm; 02880 i__2 = ivtop; 02881 for (iv = ivbot; iv <= i__2; ++iv) { 02882 i__3 = ntm; 02883 for (jtm = 1; jtm <= i__3; ++jtm) { 02884 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02885 6) - 65]; 02886 } 02887 r8_eval__[iv - ibv + (neval << 6) - 65] = hmode_(&ntm, scop); 02888 } 02889 } else if (s_cmp(cncode, "LMODE", 8L, 5L) == 0) { 02890 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02891 neval -= ntm; 02892 i__2 = ivtop; 02893 for (iv = ivbot; iv <= i__2; ++iv) { 02894 i__3 = ntm; 02895 for (jtm = 1; jtm <= i__3; ++jtm) { 02896 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02897 6) - 65]; 02898 } 02899 r8_eval__[iv - ibv + (neval << 6) - 65] = lmode_(&ntm, scop); 02900 } 02901 } else if (s_cmp(cncode, "OR", 8L, 2L) == 0) { 02902 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02903 neval -= ntm; 02904 i__2 = ivtop; 02905 for (iv = ivbot; iv <= i__2; ++iv) { 02906 i__3 = ntm; 02907 for (jtm = 1; jtm <= i__3; ++jtm) { 02908 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02909 6) - 65]; 02910 } 02911 r8_eval__[iv - ibv + (neval << 6) - 65] = lor_(&ntm, scop); 02912 } 02913 } else if (s_cmp(cncode, "MOFN", 8L, 4L) == 0) { 02914 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02915 neval -= ntm; 02916 --ntm; 02917 i__2 = ivtop; 02918 for (iv = ivbot; iv <= i__2; ++iv) { 02919 itm = (integer) r8_eval__[iv - ibv + (neval << 6) - 65]; 02920 i__3 = ntm; 02921 for (jtm = 1; jtm <= i__3; ++jtm) { 02922 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm << 6) - 02923 65]; 02924 } 02925 r8_eval__[iv - ibv + (neval << 6) - 65] = lmofn_(&itm, &ntm, 02926 scop); 02927 } 02928 } else if (s_cmp(cncode, "ASTEP", 8L, 5L) == 0) { 02929 --neval; 02930 i__2 = ivtop; 02931 for (iv = ivbot; iv <= i__2; ++iv) { 02932 if ((d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs(d__1) 02933 ) > r8_eval__[iv - ibv + (neval + 1 << 6) - 65]) { 02934 r8_eval__[iv - ibv + (neval << 6) - 65] = 1.; 02935 } else { 02936 r8_eval__[iv - ibv + (neval << 6) - 65] = 0.; 02937 } 02938 } 02939 } else if (s_cmp(cncode, "ARGMAX", 8L, 6L) == 0) { 02940 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02941 neval -= ntm; 02942 i__2 = ivtop; 02943 for (iv = ivbot; iv <= i__2; ++iv) { 02944 i__3 = ntm; 02945 for (jtm = 1; jtm <= i__3; ++jtm) { 02946 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02947 6) - 65]; 02948 } 02949 r8_eval__[iv - ibv + (neval << 6) - 65] = argmax_(&ntm, scop); 02950 } 02951 } else if (s_cmp(cncode, "ARGNUM", 8L, 6L) == 0) { 02952 ntm = (integer) r8_eval__[(neval << 6) - 64]; 02953 neval -= ntm; 02954 i__2 = ivtop; 02955 for (iv = ivbot; iv <= i__2; ++iv) { 02956 i__3 = ntm; 02957 for (jtm = 1; jtm <= i__3; ++jtm) { 02958 scop[jtm - 1] = r8_eval__[iv - ibv + (neval + jtm - 1 << 02959 6) - 65]; 02960 } 02961 r8_eval__[iv - ibv + (neval << 6) - 65] = argnum_(&ntm, scop); 02962 } 02963 /* ............................................................... 02964 ........ */ 02965 } else if (s_cmp(cncode, "FICO_T2P", 8L, 8L) == 0) { 02966 neval += -3; 02967 i__2 = ivtop; 02968 for (iv = ivbot; iv <= i__2; ++iv) { 02969 d__2 = (d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs( 02970 d__1)); 02971 r8_eval__[iv - ibv + (neval << 6) - 65] = ficotp_(&d__2, & 02972 r8_eval__[iv - ibv + (neval + 1 << 6) - 65], & 02973 r8_eval__[iv - ibv + (neval + 2 << 6) - 65], & 02974 r8_eval__[iv - ibv + (neval + 3 << 6) - 65]); 02975 } 02976 } else if (s_cmp(cncode, "FICO_P2T", 8L, 8L) == 0) { 02977 neval += -3; 02978 i__2 = ivtop; 02979 for (iv = ivbot; iv <= i__2; ++iv) { 02980 r8_eval__[iv - ibv + (neval << 6) - 65] = ficopt_(&r8_eval__[ 02981 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 02982 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 02983 2 << 6) - 65], &r8_eval__[iv - ibv + (neval + 3 << 6) 02984 - 65]); 02985 } 02986 } else if (s_cmp(cncode, "FICO_T2Z", 8L, 8L) == 0) { 02987 neval += -3; 02988 i__2 = ivtop; 02989 for (iv = ivbot; iv <= i__2; ++iv) { 02990 r8_eval__[iv - ibv + (neval << 6) - 65] = ficotz_(&r8_eval__[ 02991 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 02992 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 02993 2 << 6) - 65], &r8_eval__[iv - ibv + (neval + 3 << 6) 02994 - 65]); 02995 } 02996 /* ............................................................... 02997 ........ */ 02998 } else if (s_cmp(cncode, "FITT_T2P", 8L, 8L) == 0) { 02999 --neval; 03000 i__2 = ivtop; 03001 for (iv = ivbot; iv <= i__2; ++iv) { 03002 d__2 = (d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs( 03003 d__1)); 03004 r8_eval__[iv - ibv + (neval << 6) - 65] = fitttp_(&d__2, & 03005 r8_eval__[iv - ibv + (neval + 1 << 6) - 65]); 03006 } 03007 } else if (s_cmp(cncode, "FITT_P2T", 8L, 8L) == 0) { 03008 --neval; 03009 i__2 = ivtop; 03010 for (iv = ivbot; iv <= i__2; ++iv) { 03011 r8_eval__[iv - ibv + (neval << 6) - 65] = fittpt_(&r8_eval__[ 03012 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03013 neval + 1 << 6) - 65]); 03014 } 03015 } else if (s_cmp(cncode, "FITT_T2Z", 8L, 8L) == 0) { 03016 --neval; 03017 i__2 = ivtop; 03018 for (iv = ivbot; iv <= i__2; ++iv) { 03019 r8_eval__[iv - ibv + (neval << 6) - 65] = fitttz_(&r8_eval__[ 03020 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03021 neval + 1 << 6) - 65]); 03022 } 03023 /* ............................................................... 03024 ........ */ 03025 } else if (s_cmp(cncode, "FIFT_T2P", 8L, 8L) == 0) { 03026 neval += -2; 03027 i__2 = ivtop; 03028 for (iv = ivbot; iv <= i__2; ++iv) { 03029 r8_eval__[iv - ibv + (neval << 6) - 65] = fifttp_(&r8_eval__[ 03030 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03031 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03032 2 << 6) - 65]); 03033 } 03034 } else if (s_cmp(cncode, "FIFT_P2T", 8L, 8L) == 0) { 03035 neval += -2; 03036 i__2 = ivtop; 03037 for (iv = ivbot; iv <= i__2; ++iv) { 03038 r8_eval__[iv - ibv + (neval << 6) - 65] = fiftpt_(&r8_eval__[ 03039 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03040 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03041 2 << 6) - 65]); 03042 } 03043 } else if (s_cmp(cncode, "FIFT_T2Z", 8L, 8L) == 0) { 03044 neval += -2; 03045 i__2 = ivtop; 03046 for (iv = ivbot; iv <= i__2; ++iv) { 03047 r8_eval__[iv - ibv + (neval << 6) - 65] = fifttz_(&r8_eval__[ 03048 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03049 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03050 2 << 6) - 65]); 03051 } 03052 /* ............................................................... 03053 ........ */ 03054 } else if (s_cmp(cncode, "FIZT_T2P", 8L, 8L) == 0) { 03055 i__2 = ivtop; 03056 for (iv = ivbot; iv <= i__2; ++iv) { 03057 d__2 = (d__1 = r8_eval__[iv - ibv + (neval << 6) - 65], abs( 03058 d__1)); 03059 r8_eval__[iv - ibv + (neval << 6) - 65] = fizttp_(&d__2); 03060 } 03061 } else if (s_cmp(cncode, "FIZT_P2T", 8L, 8L) == 0) { 03062 i__2 = ivtop; 03063 for (iv = ivbot; iv <= i__2; ++iv) { 03064 r8_eval__[iv - ibv + (neval << 6) - 65] = fiztpt_(&r8_eval__[ 03065 iv - ibv + (neval << 6) - 65]); 03066 } 03067 } else if (s_cmp(cncode, "FIZT_T2Z", 8L, 8L) == 0) { 03068 i__2 = ivtop; 03069 for (iv = ivbot; iv <= i__2; ++iv) { 03070 r8_eval__[iv - ibv + (neval << 6) - 65] = fizttz_(&r8_eval__[ 03071 iv - ibv + (neval << 6) - 65]); 03072 } 03073 /* ............................................................... 03074 ........ */ 03075 } else if (s_cmp(cncode, "FICT_T2P", 8L, 8L) == 0) { 03076 --neval; 03077 i__2 = ivtop; 03078 for (iv = ivbot; iv <= i__2; ++iv) { 03079 r8_eval__[iv - ibv + (neval << 6) - 65] = ficttp_(&r8_eval__[ 03080 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03081 neval + 1 << 6) - 65]); 03082 } 03083 } else if (s_cmp(cncode, "FICT_P2T", 8L, 8L) == 0) { 03084 --neval; 03085 i__2 = ivtop; 03086 for (iv = ivbot; iv <= i__2; ++iv) { 03087 r8_eval__[iv - ibv + (neval << 6) - 65] = fictpt_(&r8_eval__[ 03088 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03089 neval + 1 << 6) - 65]); 03090 } 03091 } else if (s_cmp(cncode, "FICT_T2Z", 8L, 8L) == 0) { 03092 --neval; 03093 i__2 = ivtop; 03094 for (iv = ivbot; iv <= i__2; ++iv) { 03095 r8_eval__[iv - ibv + (neval << 6) - 65] = ficttz_(&r8_eval__[ 03096 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03097 neval + 1 << 6) - 65]); 03098 } 03099 /* ............................................................... 03100 ........ */ 03101 } else if (s_cmp(cncode, "FIBT_T2P", 8L, 8L) == 0) { 03102 neval += -2; 03103 i__2 = ivtop; 03104 for (iv = ivbot; iv <= i__2; ++iv) { 03105 r8_eval__[iv - ibv + (neval << 6) - 65] = fibttp_(&r8_eval__[ 03106 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03107 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03108 2 << 6) - 65]); 03109 } 03110 } else if (s_cmp(cncode, "FIBT_P2T", 8L, 8L) == 0) { 03111 neval += -2; 03112 i__2 = ivtop; 03113 for (iv = ivbot; iv <= i__2; ++iv) { 03114 r8_eval__[iv - ibv + (neval << 6) - 65] = fibtpt_(&r8_eval__[ 03115 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03116 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03117 2 << 6) - 65]); 03118 } 03119 } else if (s_cmp(cncode, "FIBT_T2Z", 8L, 8L) == 0) { 03120 neval += -2; 03121 i__2 = ivtop; 03122 for (iv = ivbot; iv <= i__2; ++iv) { 03123 r8_eval__[iv - ibv + (neval << 6) - 65] = fibttz_(&r8_eval__[ 03124 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03125 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03126 2 << 6) - 65]); 03127 } 03128 /* ............................................................... 03129 ........ */ 03130 } else if (s_cmp(cncode, "FIBN_T2P", 8L, 8L) == 0) { 03131 neval += -2; 03132 i__2 = ivtop; 03133 for (iv = ivbot; iv <= i__2; ++iv) { 03134 r8_eval__[iv - ibv + (neval << 6) - 65] = fibntp_(&r8_eval__[ 03135 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03136 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03137 2 << 6) - 65]); 03138 } 03139 } else if (s_cmp(cncode, "FIBN_P2T", 8L, 8L) == 0) { 03140 neval += -2; 03141 i__2 = ivtop; 03142 for (iv = ivbot; iv <= i__2; ++iv) { 03143 r8_eval__[iv - ibv + (neval << 6) - 65] = fibnpt_(&r8_eval__[ 03144 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03145 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03146 2 << 6) - 65]); 03147 } 03148 } else if (s_cmp(cncode, "FIBN_T2Z", 8L, 8L) == 0) { 03149 neval += -2; 03150 i__2 = ivtop; 03151 for (iv = ivbot; iv <= i__2; ++iv) { 03152 r8_eval__[iv - ibv + (neval << 6) - 65] = fibntz_(&r8_eval__[ 03153 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03154 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03155 2 << 6) - 65]); 03156 } 03157 /* ............................................................... 03158 ........ */ 03159 } else if (s_cmp(cncode, "FIGT_T2P", 8L, 8L) == 0) { 03160 neval += -2; 03161 i__2 = ivtop; 03162 for (iv = ivbot; iv <= i__2; ++iv) { 03163 r8_eval__[iv - ibv + (neval << 6) - 65] = figttp_(&r8_eval__[ 03164 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03165 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03166 2 << 6) - 65]); 03167 } 03168 } else if (s_cmp(cncode, "FIGT_P2T", 8L, 8L) == 0) { 03169 neval += -2; 03170 i__2 = ivtop; 03171 for (iv = ivbot; iv <= i__2; ++iv) { 03172 r8_eval__[iv - ibv + (neval << 6) - 65] = figtpt_(&r8_eval__[ 03173 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03174 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03175 2 << 6) - 65]); 03176 } 03177 } else if (s_cmp(cncode, "FIGT_T2Z", 8L, 8L) == 0) { 03178 neval += -2; 03179 i__2 = ivtop; 03180 for (iv = ivbot; iv <= i__2; ++iv) { 03181 r8_eval__[iv - ibv + (neval << 6) - 65] = figttz_(&r8_eval__[ 03182 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03183 neval + 1 << 6) - 65], &r8_eval__[iv - ibv + (neval + 03184 2 << 6) - 65]); 03185 } 03186 /* ............................................................... 03187 ........ */ 03188 } else if (s_cmp(cncode, "FIPT_T2P", 8L, 8L) == 0) { 03189 --neval; 03190 i__2 = ivtop; 03191 for (iv = ivbot; iv <= i__2; ++iv) { 03192 r8_eval__[iv - ibv + (neval << 6) - 65] = fipttp_(&r8_eval__[ 03193 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03194 neval + 1 << 6) - 65]); 03195 } 03196 } else if (s_cmp(cncode, "FIPT_P2T", 8L, 8L) == 0) { 03197 --neval; 03198 i__2 = ivtop; 03199 for (iv = ivbot; iv <= i__2; ++iv) { 03200 r8_eval__[iv - ibv + (neval << 6) - 65] = fiptpt_(&r8_eval__[ 03201 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03202 neval + 1 << 6) - 65]); 03203 } 03204 } else if (s_cmp(cncode, "FIPT_T2Z", 8L, 8L) == 0) { 03205 --neval; 03206 i__2 = ivtop; 03207 for (iv = ivbot; iv <= i__2; ++iv) { 03208 r8_eval__[iv - ibv + (neval << 6) - 65] = fipttz_(&r8_eval__[ 03209 iv - ibv + (neval << 6) - 65], &r8_eval__[iv - ibv + ( 03210 neval + 1 << 6) - 65]); 03211 } 03212 /* ............................................................... 03213 ........ */ 03214 } 03215 /* ------------------------------------------------------------------ 03216 ---- */ 03217 if (ncode < *num_code__) { 03218 goto L1000; 03219 } 03220 03221 i__2 = ivtop; 03222 for (iv = ivbot; iv <= i__2; ++iv) { 03223 vout[iv] = r8_eval__[iv - ibv + (neval << 6) - 65]; 03224 /* L4990: */ 03225 } 03226 03227 /* L5000: */ 03228 } 03229 /* ----------------------------------------------------------------------- 03230 */ 03231 L8000: 03232 return 0; 03233 } /* parevec_ */ |
|
Definition at line 26 of file parser.c. References c__1, c__3, do_fio(), e_wsfe(), execute_(), get_token__(), L, last_nonblank__(), s_cat(), s_copy(), and s_wsfe(). Referenced by MAIN__(), and PARSER_generate_code().
00028 { 00029 /* Initialized data */ 00030 00031 static integer n_funcargs__[99] = { 1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1, 00032 2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,-1,-1,-1,2,1,1,1,-1, 00033 4,4,4,2,2,2,3,3,3,1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,2,2,2,1,-1,-1,2,1, 00034 1,1,1,-1,1,-1,-1,-1,1,1,2,1,1,-1,-1,-1,2 }; 00035 00036 /* Format strings */ 00037 static char fmt_9001[] = "(\002 PARSER error\002,i4,\002: \002,a/1x,a/80" 00038 "a1)"; 00039 00040 /* System generated locals */ 00041 address a__1[3]; 00042 integer i__1, i__2[3], i__3; 00043 static doublereal equiv_0[1]; 00044 00045 /* Builtin functions */ 00046 /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen), s_cat(char *, 00047 char **, integer *, integer *, ftnlen); 00048 integer s_wsfe(cilist *), do_fio(integer *, char *, ftnlen), e_wsfe(void); 00049 00050 /* Local variables */ 00051 #define r8_token__ (equiv_0) 00052 static integer narg, nlen, nerr, ipos, npos, nextcode, ncode; 00053 static char c_message__[30]; 00054 static integer nfunc, nused; 00055 extern /* Subroutine */ int get_token__(char *, integer *, doublereal *, 00056 integer *, ftnlen); 00057 static doublereal val_token__; 00058 extern integer last_nonblank__(char *, ftnlen); 00059 static integer nf, n_code__[2048], n_func__[40], ntoken; 00060 static char c_local__[10000]; 00061 extern /* Subroutine */ int execute_(integer *, char *, ftnlen); 00062 #define c8_token__ ((char *)equiv_0) 00063 static char c_ch__[1]; 00064 00065 /* Fortran I/O blocks */ 00066 static cilist io___22 = { 0, 6, 0, fmt_9001, 0 }; 00067 00068 00069 00070 /* Parse the arithmetic expression in C_EXPR. The code required to */ 00071 /* evaluate the expression is returned in the first NUM_CODE entries */ 00072 /* of the CHARACTER*8 array C_CODE. If NUM_CODE is returned as zero, */ 00073 /* an error occurred. On input, L_PRINT determines whether or not to */ 00074 /* print error messages. */ 00075 00076 /* Modified 02/17/89 by RWCox from APEVAL subroutine in APFORT, for PC. 00077 */ 00078 /* Modified 06/29/89 by RWCox for Sun Fortran. */ 00079 /* Modified 04/04/91 by RWCox to fix problem with -x**2 type operations. 00080 */ 00081 /* Modified 11/20/96 by RWCox to try to control errors in evaluation. */ 00082 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00083 */ 00084 00085 00086 /* Compilation, evaluation, and function stacks. */ 00087 00088 00089 00090 /* Random local stuff */ 00091 00092 00093 00094 00095 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00096 */ 00097 00098 /* ----------------------------------------------------------------------- 00099 */ 00100 /* Include file for PARSER. This file must be kept with PARSER.FOR. */ 00101 /* It defines some symbolic constants that PARSER and its subsidiary */ 00102 /* routines use. */ 00103 /* ....................................................................... 00104 */ 00105 /* Define Token types and values */ 00106 00107 00108 00109 /* ....................................................................... 00110 */ 00111 /* Define the Nonterminals */ 00112 00113 00114 /* ....................................................................... 00115 */ 00116 /* Define the Opcodes */ 00117 00118 00119 /* ....................................................................... 00120 */ 00121 /* Define Function names, etc. */ 00122 00123 00124 00125 /* Parameter adjustments */ 00126 c_code__ -= 8; 00127 00128 /* Function Body */ 00129 00130 /* ----------------------------------------------------------------------- 00131 */ 00132 nlen = last_nonblank__(c_expr__, c_expr_len); 00133 if (nlen <= 0 || nlen > 9999) { 00134 /* !no input, or too much */ 00135 *num_code__ = 0; 00136 goto L8000; 00137 } 00138 00139 /* Copy input string to local, deleting blanks and converting case. */ 00140 00141 npos = 0; 00142 i__1 = nlen; 00143 for (ipos = 1; ipos <= i__1; ++ipos) { 00144 *(unsigned char *)c_ch__ = *(unsigned char *)&c_expr__[ipos - 1]; 00145 if (*(unsigned char *)c_ch__ != ' ') { 00146 if (*(unsigned char *)c_ch__ >= 'a' && *(unsigned char *)c_ch__ <= 00147 'z') { 00148 *(unsigned char *)c_ch__ = (char) (*(unsigned char *)c_ch__ + 00149 ('A' - 'a')); 00150 } 00151 /* !convert case */ 00152 ++npos; 00153 *(unsigned char *)&c_local__[npos - 1] = *(unsigned char *)c_ch__; 00154 } 00155 /* L10: */ 00156 } 00157 /* !tack 1 blank at the end */ 00158 nlen = npos + 1; 00159 *(unsigned char *)&c_local__[nlen - 1] = ' '; 00160 /* ....................................................................... 00161 */ 00162 /* This routine parses expressions according to the grammar: */ 00163 00164 /* EXPR == E9 E8 E6 E4 $ */ 00165 00166 /* E4 == <addop> E9 E8 E6 E4 | <null> */ 00167 00168 /* E6 == <mulop> E9 E8 E6 | <null> */ 00169 00170 /* E8 == <expop> E9 E8 | <null> */ 00171 00172 /* E9 == <number> | <function> ( E9 E8 E6 E4 ARGTL ) */ 00173 /* | ( E9 E8 E6 E4 ) | <addop> E9 */ 00174 00175 /* ARGTL == , E9 E8 E6 E4 ARGTL | <null> */ 00176 00177 /* <addop> is + or - */ 00178 /* <mulop> is * or / */ 00179 /* <expop> is ** */ 00180 /* <number> is a literal number or a DCL variable */ 00181 /* <function> is in the list C_FUNCNAME */ 00182 00183 /* The predictive parser described in Aho and Ullman, "Principles of */ 00184 /* Compiler Design" on pages 185-191 for LL(1) grammars is used here, */ 00185 /* with additions to perform the evaluation as the parsing proceeds. */ 00186 /* These consist of adding code (NC_) to the compilation stack when an */ 00187 /* expansion is made. When the code is popped off the stack, it is */ 00188 /* executed. */ 00189 00190 /* 02/17/89: Now, when code is popped off the stack, it is just */ 00191 /* added to the output code list. */ 00192 /* ....................................................................... 00193 */ 00194 /* Prepare to process input string. Initialize the stacks, etc. */ 00195 00196 /* !start scan at 1st character */ 00197 npos = 1; 00198 /* !no function calls yet */ 00199 nfunc = 0; 00200 /* !initial compile stack is E9 E8 E6 E4 $ */ 00201 n_code__[0] = 2000; 00202 n_code__[1] = 2001; 00203 n_code__[2] = 2002; 00204 n_code__[3] = 2003; 00205 n_code__[4] = 2004; 00206 ncode = 5; 00207 *num_code__ = 0; 00208 /* ....................................................................... 00209 */ 00210 /* 1000 is the loop back point to process the next token in the input */ 00211 /* string. */ 00212 00213 L1000: 00214 get_token__(c_local__ + (npos - 1), &ntoken, &val_token__, &nused, nlen - 00215 (npos - 1)); 00216 00217 if (ntoken == 1999) { 00218 nerr = 1; 00219 s_copy(c_message__, "Can't interpret symbol", 30L, 22L); 00220 goto L9000; 00221 /* !error exit */ 00222 } 00223 00224 /* At 2000, process the next compile code until the token is used up. */ 00225 00226 L2000: 00227 nextcode = n_code__[ncode - 1]; 00228 00229 /* If next entry on the compile stack is an opcode, then apply it to */ 00230 /* the evaluation stack. */ 00231 /* 02/17/89: just add it to the output */ 00232 00233 if (nextcode >= 3000 && nextcode <= 4999) { 00234 ++(*num_code__); 00235 execute_(&nextcode, c_code__ + (*num_code__ << 3), 8L); 00236 --ncode; 00237 /* !remove opcode from compile stack */ 00238 goto L2000; 00239 /* !loop back for next compile stack entry */ 00240 } 00241 00242 /* If next compile stack entry is a token itself, it must match the */ 00243 /* new token from the input. */ 00244 00245 if (nextcode >= 1000 && nextcode <= 1999) { 00246 if (nextcode == ntoken) { 00247 /* !a match */ 00248 --ncode; 00249 /* !pop token from compile stack */ 00250 goto L5000; 00251 /* !loop back for next token */ 00252 } 00253 nerr = 2; 00254 if (nextcode == 1004) { 00255 *(unsigned char *)c_ch__ = '('; 00256 } else if (nextcode == 1005) { 00257 *(unsigned char *)c_ch__ = ')'; 00258 } else if (nextcode == 1006) { 00259 *(unsigned char *)c_ch__ = ','; 00260 } else { 00261 *(unsigned char *)c_ch__ = '?'; 00262 } 00263 /* Writing concatenation */ 00264 i__2[0] = 12, a__1[0] = "Expected a \""; 00265 i__2[1] = 1, a__1[1] = c_ch__; 00266 i__2[2] = 1, a__1[2] = "\""; 00267 s_cat(c_message__, a__1, i__2, &c__3, 30L); 00268 goto L9000; 00269 /* !error exit */ 00270 } 00271 00272 /* Should have a nonterminal (NN) here. */ 00273 00274 if (nextcode < 2000 || nextcode > 2999) { 00275 nerr = 3; 00276 s_copy(c_message__, "Internal parser error", 30L, 21L); 00277 goto L9000; 00278 /* !error exit */ 00279 } 00280 00281 /* Expand the nonterminal appropriately, depending on the token. */ 00282 /* If no legal expansion, then stop with an error. */ 00283 00284 /* TOKEN = end of string */ 00285 00286 if (ntoken == 1000) { 00287 if (nextcode == 2000) { 00288 /* !end of string = end of expr ==> compilation done */ 00289 goto L8000; 00290 00291 } else if (nextcode == 2003 || nextcode == 2002 || nextcode == 2001) { 00292 --ncode; 00293 /* !expand this to nothing */ 00294 goto L2000; 00295 /* !and try this token again */ 00296 } 00297 nerr = 4; 00298 s_copy(c_message__, "Unexpected end of input", 30L, 23L); 00299 goto L9000; 00300 /* !error exit */ 00301 } 00302 00303 /* Check if end of input was expected but not encountered. */ 00304 00305 if (nextcode == 2000) { 00306 nerr = 15; 00307 s_copy(c_message__, "Expected end of input", 30L, 21L); 00308 goto L9000; 00309 /* !error exit */ 00310 } 00311 00312 /* TOKEN = number or symbol */ 00313 /* 02/17/89: added NT_SYMBOL token type; now, the code for */ 00314 /* pushing the number or symbol onto the stack is */ 00315 /* added to the output. */ 00316 00317 if (ntoken == 1007 || ntoken == 1009) { 00318 if (nextcode == 2004) { 00319 /* !only legal time for a number */ 00320 if (ntoken == 1007) { 00321 s_copy(c_code__ + (*num_code__ + 1 << 3), "PUSHNUM", 8L, 7L); 00322 } else { 00323 s_copy(c_code__ + (*num_code__ + 1 << 3), "PUSHSYM", 8L, 7L); 00324 } 00325 *r8_token__ = val_token__; 00326 s_copy(c_code__ + (*num_code__ + 2 << 3), c8_token__, 8L, 8L); 00327 *num_code__ += 2; 00328 --ncode; 00329 /* !pop E9 from compile stack */ 00330 goto L5000; 00331 /* !go to next token */ 00332 } 00333 nerr = 5; 00334 s_copy(c_message__, "Expected an operator", 30L, 20L); 00335 goto L9000; 00336 /* !error exit */ 00337 } 00338 00339 /* TOKEN = function call */ 00340 00341 if (ntoken == 1008) { 00342 if (nextcode == 2004) { 00343 /* !only legal time for a function */ 00344 00345 n_code__[ncode + 6] = 1004; 00346 /* !expand E9 into ( E9 E8 E6 E4 ARGTL ) <func> */ 00347 n_code__[ncode + 5] = 2004; 00348 n_code__[ncode + 4] = 2003; 00349 n_code__[ncode + 3] = 2002; 00350 n_code__[ncode + 2] = 2001; 00351 n_code__[ncode + 1] = 2005; 00352 n_code__[ncode] = 1005; 00353 n_code__[ncode - 1] = (integer) val_token__ + 4000; 00354 ncode += 7; 00355 00356 nfunc += 2; 00357 /* !setup function stack to check # arguments */ 00358 n_func__[nfunc - 2] = (integer) val_token__; 00359 n_func__[nfunc - 1] = 0; 00360 goto L5000; 00361 /* !process next token */ 00362 } 00363 nerr = 6; 00364 s_copy(c_message__, "Expected an operator", 30L, 20L); 00365 goto L9000; 00366 /* !error exit */ 00367 } 00368 00369 /* TOKEN = addition operator */ 00370 00371 if (ntoken == 1001) { 00372 if (nextcode == 2001) { 00373 /* !expand E4 into E9 E8 E6 <binary addop> E4 */ 00374 n_code__[ncode + 3] = 2004; 00375 n_code__[ncode + 2] = 2003; 00376 n_code__[ncode + 1] = 2002; 00377 if (val_token__ == 1.) { 00378 n_code__[ncode] = 3001; 00379 } else { 00380 n_code__[ncode] = 3002; 00381 } 00382 n_code__[ncode - 1] = 2001; 00383 ncode += 4; 00384 goto L5000; 00385 /* !process next token */ 00386 00387 } else if (nextcode == 2002 || nextcode == 2003) { 00388 --ncode; 00389 /* !expand E6 or E8 to null and try again */ 00390 goto L2000; 00391 00392 } else if (nextcode == 2004) { 00393 /* !unary + or - */ 00394 if (val_token__ == 2.) { 00395 /*!expand E9 into E9 E8 <unary minus> if addop is - otherwise 00396 leave E9 alone*/ 00397 /* [04/04/91 change: */ 00398 /* used to expand to E9 <unary minus>, which makes -x**2 beco 00399 me (-x)**2] */ 00400 n_code__[ncode + 1] = 2004; 00401 n_code__[ncode] = 2003; 00402 n_code__[ncode - 1] = 3006; 00403 ncode += 2; 00404 } 00405 goto L5000; 00406 /* !process next token */ 00407 } 00408 nerr = 7; 00409 s_copy(c_message__, "Illegal arithmetic syntax", 30L, 25L); 00410 goto L9000; 00411 /* !error exit */ 00412 } 00413 00414 /* TOKEN = multiplying operator */ 00415 00416 if (ntoken == 1002) { 00417 if (nextcode == 2002) { 00418 /* !expand E6 into E9 E8 <operator> E6 */ 00419 n_code__[ncode + 2] = 2004; 00420 n_code__[ncode + 1] = 2003; 00421 if (val_token__ == 1.) { 00422 n_code__[ncode] = 3003; 00423 } else { 00424 n_code__[ncode] = 3004; 00425 } 00426 n_code__[ncode - 1] = 2002; 00427 ncode += 3; 00428 goto L5000; 00429 /* !next token */ 00430 00431 } else if (nextcode == 2003) { 00432 /* !expand E8 to null and try this token again */ 00433 --ncode; 00434 goto L2000; 00435 } 00436 nerr = 8; 00437 s_copy(c_message__, "Illegal arithmetic syntax", 30L, 25L); 00438 goto L9000; 00439 /* !error exit */ 00440 } 00441 00442 /* TOKEN = exponentiation operator */ 00443 00444 if (ntoken == 1003) { 00445 if (nextcode == 2003) { 00446 /* !expand E8 into E9 E8 <**> */ 00447 n_code__[ncode + 1] = 2004; 00448 n_code__[ncode] = 2003; 00449 n_code__[ncode - 1] = 3005; 00450 ncode += 2; 00451 goto L5000; 00452 /* !process next token */ 00453 } 00454 nerr = 9; 00455 s_copy(c_message__, "Illegal arithmetic syntax", 30L, 25L); 00456 goto L9000; 00457 /* !error exit */ 00458 } 00459 00460 /* TOKEN = comma */ 00461 00462 if (ntoken == 1006) { 00463 if (nextcode == 2001 || nextcode == 2002 || nextcode == 2003) { 00464 00465 --ncode; 00466 /* !pop this nonterminal and try this token again */ 00467 goto L2000; 00468 00469 } else if (nextcode == 2005) { 00470 /* !expand ARGTL into E9 E8 E6 E4 ARGTL */ 00471 n_code__[ncode + 3] = 2004; 00472 n_code__[ncode + 2] = 2003; 00473 n_code__[ncode + 1] = 2002; 00474 n_code__[ncode] = 2001; 00475 n_code__[ncode - 1] = 2005; 00476 ncode += 4; 00477 /* !add 1 to no. of args. encountered, and check if there are too 00478 many */ 00479 ++n_func__[nfunc - 1]; 00480 nf = n_func__[nfunc - 2]; 00481 if (n_funcargs__[nf - 1] <= n_func__[nfunc - 1] && n_funcargs__[ 00482 nf - 1] > 0) { 00483 nerr = 12; 00484 s_copy(c_message__, "Wrong number of arguments", 30L, 25L); 00485 goto L9000; 00486 /* !error exit */ 00487 } 00488 goto L5000; 00489 /* !process next token */ 00490 } 00491 nerr = 10; 00492 s_copy(c_message__, "Expected an expression", 30L, 22L); 00493 goto L9000; 00494 /* !error exit */ 00495 } 00496 00497 /* TOKEN = open parenthesis */ 00498 00499 if (ntoken == 1004) { 00500 if (nextcode == 2004) { 00501 /* !expand E9 into E9 E8 E6 E4 ) */ 00502 n_code__[ncode + 3] = 2004; 00503 n_code__[ncode + 2] = 2003; 00504 n_code__[ncode + 1] = 2002; 00505 n_code__[ncode] = 2001; 00506 n_code__[ncode - 1] = 1005; 00507 ncode += 4; 00508 goto L5000; 00509 /* !process next token */ 00510 } 00511 nerr = 11; 00512 s_copy(c_message__, "Expected an operator", 30L, 20L); 00513 goto L9000; 00514 /* !error exit */ 00515 } 00516 00517 /* TOKEN = close parenthesis */ 00518 00519 if (ntoken == 1005) { 00520 if (nextcode == 2001 || nextcode == 2002 || nextcode == 2003) { 00521 00522 --ncode; 00523 /* !pop this nonterminal and try this token out on the next one */ 00524 goto L2000; 00525 00526 } else if (nextcode == 2005) { 00527 /* !end of function call */ 00528 00529 narg = n_func__[nfunc - 1] + 1; 00530 /* !check # arguments */ 00531 nf = n_func__[nfunc - 2]; 00532 nfunc += -2; 00533 if (n_funcargs__[nf - 1] <= 0) { 00534 /* !variable # of args ==> push number of args on stack (Feb 1 00535 997) */ 00536 s_copy(c_code__ + (*num_code__ + 1 << 3), "PUSHNUM", 8L, 7L); 00537 *r8_token__ = (doublereal) narg; 00538 s_copy(c_code__ + (*num_code__ + 2 << 3), c8_token__, 8L, 8L); 00539 *num_code__ += 2; 00540 } else if (n_funcargs__[nf - 1] != narg) { 00541 /* !illegal # of args */ 00542 nerr = 12; 00543 s_copy(c_message__, "Wrong number of arguments", 30L, 25L); 00544 goto L9000; 00545 /* !error exit */ 00546 } 00547 00548 --ncode; 00549 /*!pop this nonterminal and try to match the ) with the next compi 00550 le stack entry*/ 00551 goto L2000; 00552 } 00553 nerr = 13; 00554 s_copy(c_message__, "Expected an expression", 30L, 22L); 00555 goto L9000; 00556 /* !error exit */ 00557 } 00558 nerr = 14; 00559 s_copy(c_message__, "Internal parser error", 30L, 21L); 00560 goto L9000; 00561 /* !error exit */ 00562 /* ....................................................................... 00563 */ 00564 /* At 5000, advance to the next token and loop back */ 00565 00566 L5000: 00567 npos += nused; 00568 goto L1000; 00569 /* ....................................................................... 00570 */ 00571 /* At 8000, exit */ 00572 00573 L8000: 00574 return 0; 00575 /* ....................................................................... 00576 */ 00577 /* At 9000, error exit */ 00578 00579 L9000: 00580 if (*l_print__) { 00581 if (nused < 1) { 00582 nused = 1; 00583 } 00584 s_wsfe(&io___22); 00585 do_fio(&c__1, (char *)&nerr, (ftnlen)sizeof(integer)); 00586 do_fio(&c__1, c_message__, 30L); 00587 do_fio(&c__1, c_local__, nlen); 00588 i__1 = npos; 00589 for (nf = 1; nf <= i__1; ++nf) { 00590 do_fio(&c__1, " ", 1L); 00591 } 00592 i__3 = nused; 00593 for (nf = 1; nf <= i__3; ++nf) { 00594 do_fio(&c__1, "#", 1L); 00595 } 00596 e_wsfe(); 00597 00598 /* CC WRITE(*,9002) (N_CODE(NF),NF=NCODE,1,-1) */ 00599 /* CC9002 FORMAT(' Compile stack is (top down)' / 10(1X,I6) ) */ 00600 } 00601 00602 *num_code__ = 0; 00603 return 0; 00604 } /* parser_ */ |
|
Definition at line 3270 of file parser.c. References derfc_(). Referenced by pareval_(), and parevec_().
03271 { 03272 /* System generated locals */ 03273 doublereal ret_val, d__1; 03274 03275 /* Local variables */ 03276 extern doublereal derfc_(doublereal *); 03277 03278 03279 /* Compute the reversed cdf of a Gaussian. */ 03280 03281 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03282 */ 03283 03284 d__1 = *x / 1.414213562373095; 03285 ret_val = derfc_(&d__1) * .5; 03286 return ret_val; 03287 } /* qg_ */ |
|
Definition at line 3526 of file parser.c. References derfc_(), dt, and p. Referenced by pareval_(), and parevec_().
03527 { 03528 /* System generated locals */ 03529 doublereal ret_val, d__1; 03530 03531 /* Builtin functions */ 03532 double log(doublereal), sqrt(doublereal), exp(doublereal); 03533 03534 /* Local variables */ 03535 static integer newt; 03536 extern doublereal derfc_(doublereal *); 03537 static doublereal dp, dq, dt, dx, ddq; 03538 03539 03540 /* Return x such that Q(x)=P, for 0 < P < 1. Q=reversed Gaussian cdf. */ 03541 03542 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03543 */ 03544 03545 dp = *p; 03546 if (dp > .5) { 03547 dp = 1. - dp; 03548 } 03549 if (dp <= 0.) { 03550 dx = 13.; 03551 goto L8000; 03552 } 03553 03554 /* Step 1: use 26.2.23 from Abramowitz and Stegun */ 03555 03556 dt = sqrt(log(dp) * -2.); 03557 dx = dt - ((dt * .010328 + .802853) * dt + 2.525517) / (((dt * .001308 + 03558 .189269) * dt + 1.432788) * dt + 1.); 03559 03560 /* Step 2: do 3 Newton steps to improve this */ 03561 03562 for (newt = 1; newt <= 3; ++newt) { 03563 d__1 = dx / 1.414213562373095; 03564 dq = derfc_(&d__1) * .5 - dp; 03565 ddq = exp(dx * -.5 * dx) / 2.506628274631; 03566 dx += dq / ddq; 03567 /* L100: */ 03568 } 03569 03570 L8000: 03571 if (*p > .5) { 03572 ret_val = -dx; 03573 } else { 03574 ret_val = dx; 03575 } 03576 03577 return ret_val; 03578 } /* qginv_ */ |
|
Definition at line 4323 of file parser.c. References e_wsfe(), and s_wsfe(). Referenced by dai_(), dbesi0_(), dbesi1_(), dbesk0_(), dbesk1_(), dbi_(), and dgamma_().
04324 { 04325 /* Format strings */ 04326 static char fmt_999[] = "(\002*** PARSER: unimplemented function ***\002)" 04327 ; 04328 04329 /* Builtin functions */ 04330 integer s_wsfe(cilist *), e_wsfe(void); 04331 04332 /* Fortran I/O blocks */ 04333 static cilist io___123 = { 0, 6, 0, fmt_999, 0 }; 04334 04335 04336 s_wsfe(&io___123); 04337 e_wsfe(); 04338 return 0; 04339 } /* qqqerr_ */ |
|
Definition at line 3608 of file parser.c. References abs. Referenced by pareval_(), and parevec_().
03609 { 03610 /* System generated locals */ 03611 doublereal ret_val; 03612 03613 /* Local variables */ 03614 static doublereal ax; 03615 03616 ax = abs(*x); 03617 if (ax <= .5) { 03618 ret_val = 1.; 03619 } else { 03620 ret_val = 0.; 03621 } 03622 return ret_val; 03623 } /* rect_ */ |
|
Definition at line 3853 of file parser.c. References stdev_(). Referenced by pareval_(), and parevec_().
03854 { 03855 /* System generated locals */ 03856 doublereal ret_val; 03857 03858 /* Builtin functions */ 03859 double sqrt(doublereal); 03860 03861 /* Local variables */ 03862 extern doublereal stdev_(integer *, doublereal *); 03863 03864 03865 /* Parameter adjustments */ 03866 --x; 03867 03868 /* Function Body */ 03869 ret_val = stdev_(n, &x[1]) / sqrt(*n + 1e-6); 03870 return ret_val; 03871 } /* sem_ */ |
|
Definition at line 3810 of file parser.c. Referenced by pareval_(), parevec_(), and sem_().
03811 { 03812 /* System generated locals */ 03813 integer i__1; 03814 doublereal ret_val, d__1; 03815 03816 /* Builtin functions */ 03817 double sqrt(doublereal); 03818 03819 /* Local variables */ 03820 static doublereal xbar; 03821 static integer it; 03822 static doublereal tmp; 03823 03824 03825 /* Parameter adjustments */ 03826 --x; 03827 03828 /* Function Body */ 03829 if (*n == 1) { 03830 ret_val = 0.; 03831 return ret_val; 03832 } 03833 tmp = 0.; 03834 i__1 = *n; 03835 for (it = 1; it <= i__1; ++it) { 03836 tmp += x[it]; 03837 } 03838 xbar = tmp / *n; 03839 tmp = 0.; 03840 i__1 = *n; 03841 for (it = 1; it <= i__1; ++it) { 03842 /* Computing 2nd power */ 03843 d__1 = x[it] - xbar; 03844 tmp += d__1 * d__1; 03845 } 03846 ret_val = sqrt(tmp / (*n - 1.)); 03847 return ret_val; 03848 } /* stdev_ */ |
|
Definition at line 3628 of file parser.c. Referenced by pareval_(), and parevec_().
03629 { 03630 /* System generated locals */ 03631 doublereal ret_val; 03632 03633 if (*x <= 0.) { 03634 ret_val = 0.; 03635 } else { 03636 ret_val = 1.; 03637 } 03638 return ret_val; 03639 } /* step_ */ |
|
Definition at line 3644 of file parser.c. References abs. Referenced by pareval_(), and parevec_().
03645 { 03646 /* System generated locals */ 03647 doublereal ret_val; 03648 03649 /* Local variables */ 03650 static doublereal ax; 03651 03652 ax = abs(*x); 03653 if (ax >= 1.) { 03654 ret_val = 0.; 03655 } else { 03656 ret_val = 1. - ax; 03657 } 03658 return ret_val; 03659 } /* tent_ */ |
|
Definition at line 3416 of file parser.c. References c_b384, and unif_(). Referenced by pareval_(), and parevec_().
03417 { 03418 /* System generated locals */ 03419 doublereal ret_val; 03420 03421 /* Local variables */ 03422 extern doublereal unif_(doublereal *); 03423 03424 03425 /* Return a U(0,X) random variable. */ 03426 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03427 */ 03428 03429 ret_val = *x * unif_(&c_b384); 03430 return ret_val; 03431 } /* uran_ */ |
|
Definition at line 3242 of file parser.c. Referenced by pareval_(), and parevec_().
03243 { 03244 /* System generated locals */ 03245 doublereal ret_val; 03246 03247 /* Builtin functions */ 03248 double tan(doublereal), tanh(doublereal); 03249 03250 /* Local variables */ 03251 static doublereal y; 03252 03253 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 03254 */ 03255 03256 if (*x <= 0.) { 03257 ret_val = 0.; 03258 } else if (*x >= 1.f) { 03259 ret_val = 1.; 03260 } else { 03261 y = (*x * 1.6 - .8) * 1.5707963267948966; 03262 ret_val = (tanh(tan(y)) + .99576486) * .50212657; 03263 } 03264 return ret_val; 03265 } /* ztone_ */ |
Variable Documentation
|
Definition at line 11 of file parser.c. Referenced by get_token__(), pareval_(), parevec_(), and parser_(). |
|
Definition at line 10 of file parser.c. Referenced by parser_(). |
|
Definition at line 12 of file parser.c. Referenced by eran_(), gran2_(), gran_(), iran_(), lran_(), and uran_(). |
|
Definition at line 13 of file parser.c. Referenced by gran1_(). |
|
Definition at line 14 of file parser.c. Referenced by gran1_(). |
|
Definition at line 15 of file parser.c. Referenced by gran1_(). |
|
Definition at line 16 of file parser.c. Referenced by gran1_(). |
|
Definition at line 17 of file parser.c. Referenced by gran1_(). |
|
Definition at line 18 of file parser.c. Referenced by gran1_(). |
|
Definition at line 19 of file parser.c. Referenced by gran1_(). |
|
Definition at line 20 of file parser.c. Referenced by gran1_(). |
|
Definition at line 21 of file parser.c. Referenced by gran1_(). |
|
Definition at line 22 of file parser.c. Referenced by gran1_(). |
|
Definition at line 23 of file parser.c. Referenced by gran1_(). |
|
Definition at line 24 of file parser.c. Referenced by gran1_(). |