📄 intrinsic.c
字号:
x, BT_REAL, dr, REQUIRED); add_sym_1 ("alog10", 1, 1, BT_REAL, dr, GFC_STD_F77, NULL, gfc_simplify_log10, gfc_resolve_log10, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dlog10", 1, 1, BT_REAL, dd, GFC_STD_F77, NULL, gfc_simplify_log10, gfc_resolve_log10, x, BT_REAL, dd, REQUIRED); make_generic ("log10", GFC_ISYM_LOG10, GFC_STD_F77); add_sym_2 ("logical", 0, 1, BT_LOGICAL, dl, GFC_STD_F95, gfc_check_logical, gfc_simplify_logical, gfc_resolve_logical, l, BT_LOGICAL, dl, REQUIRED, kind, BT_INTEGER, di, OPTIONAL); make_generic ("logical", GFC_ISYM_LOGICAL, GFC_STD_F95); add_sym_1 ("malloc", 0, 1, BT_INTEGER, ii, GFC_STD_GNU, gfc_check_malloc, NULL, gfc_resolve_malloc, a, BT_INTEGER, di, REQUIRED); make_generic ("malloc", GFC_ISYM_MALLOC, GFC_STD_GNU); add_sym_2 ("matmul", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_matmul, NULL, gfc_resolve_matmul, ma, BT_REAL, dr, REQUIRED, mb, BT_REAL, dr, REQUIRED); make_generic ("matmul", GFC_ISYM_MATMUL, GFC_STD_F95); /* Note: amax0 is equivalent to real(max), max1 is equivalent to int(max). The max function must take at least two arguments. */ add_sym_1m ("max", 1, 0, BT_UNKNOWN, 0, GFC_STD_F77, gfc_check_min_max, gfc_simplify_max, gfc_resolve_max, a1, BT_UNKNOWN, dr, REQUIRED, a2, BT_UNKNOWN, dr, REQUIRED); add_sym_1m ("max0", 1, 0, BT_INTEGER, di, GFC_STD_F77, gfc_check_min_max_integer, gfc_simplify_max, NULL, a1, BT_INTEGER, di, REQUIRED, a2, BT_INTEGER, di, REQUIRED); add_sym_1m ("amax0", 1, 0, BT_REAL, dr, GFC_STD_F77, gfc_check_min_max_integer, gfc_simplify_max, NULL, a1, BT_INTEGER, di, REQUIRED, a2, BT_INTEGER, di, REQUIRED); add_sym_1m ("amax1", 1, 0, BT_REAL, dr, GFC_STD_F77, gfc_check_min_max_real, gfc_simplify_max, NULL, a1, BT_REAL, dr, REQUIRED, a2, BT_REAL, dr, REQUIRED); add_sym_1m ("max1", 1, 0, BT_INTEGER, di, GFC_STD_F77, gfc_check_min_max_real, gfc_simplify_max, NULL, a1, BT_REAL, dr, REQUIRED, a2, BT_REAL, dr, REQUIRED); add_sym_1m ("dmax1", 1, 0, BT_REAL, dd, GFC_STD_F77, gfc_check_min_max_double, gfc_simplify_max, NULL, a1, BT_REAL, dd, REQUIRED, a2, BT_REAL, dd, REQUIRED); make_generic ("max", GFC_ISYM_MAX, GFC_STD_F77); add_sym_1 ("maxexponent", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_x, gfc_simplify_maxexponent, NULL, x, BT_UNKNOWN, dr, REQUIRED); make_generic ("maxexponent", GFC_ISYM_NONE, GFC_STD_F95); add_sym_3ml ("maxloc", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_minloc_maxloc, NULL, gfc_resolve_maxloc, ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, msk, BT_LOGICAL, dl, OPTIONAL); make_generic ("maxloc", GFC_ISYM_MAXLOC, GFC_STD_F95); add_sym_3red ("maxval", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_minval_maxval, NULL, gfc_resolve_maxval, ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, msk, BT_LOGICAL, dl, OPTIONAL); make_generic ("maxval", GFC_ISYM_MAXVAL, GFC_STD_F95); add_sym_3 ("merge", 1, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_merge, NULL, gfc_resolve_merge, ts, BT_REAL, dr, REQUIRED, fs, BT_REAL, dr, REQUIRED, msk, BT_LOGICAL, dl, REQUIRED); make_generic ("merge", GFC_ISYM_MERGE, GFC_STD_F95); /* Note: amin0 is equivalent to real(min), min1 is equivalent to int(min). */ add_sym_1m ("min", 1, 0, BT_UNKNOWN, 0, GFC_STD_F77, gfc_check_min_max, gfc_simplify_min, gfc_resolve_min, a1, BT_REAL, dr, REQUIRED, a2, BT_REAL, dr, REQUIRED); add_sym_1m ("min0", 1, 0, BT_INTEGER, di, GFC_STD_F77, gfc_check_min_max_integer, gfc_simplify_min, NULL, a1, BT_INTEGER, di, REQUIRED, a2, BT_INTEGER, di, REQUIRED); add_sym_1m ("amin0", 1, 0, BT_REAL, dr, GFC_STD_F77, gfc_check_min_max_integer, gfc_simplify_min, NULL, a1, BT_INTEGER, di, REQUIRED, a2, BT_INTEGER, di, REQUIRED); add_sym_1m ("amin1", 1, 0, BT_REAL, dr, GFC_STD_F77, gfc_check_min_max_real, gfc_simplify_min, NULL, a1, BT_REAL, dr, REQUIRED, a2, BT_REAL, dr, REQUIRED); add_sym_1m ("min1", 1, 0, BT_INTEGER, di, GFC_STD_F77, gfc_check_min_max_real, gfc_simplify_min, NULL, a1, BT_REAL, dr, REQUIRED, a2, BT_REAL, dr, REQUIRED); add_sym_1m ("dmin1", 1, 0, BT_REAL, dd, GFC_STD_F77, gfc_check_min_max_double, gfc_simplify_min, NULL, a1, BT_REAL, dd, REQUIRED, a2, BT_REAL, dd, REQUIRED); make_generic ("min", GFC_ISYM_MIN, GFC_STD_F77); add_sym_1 ("minexponent", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_x, gfc_simplify_minexponent, NULL, x, BT_UNKNOWN, dr, REQUIRED); make_generic ("minexponent", GFC_ISYM_NONE, GFC_STD_F95); add_sym_3ml ("minloc", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_minloc_maxloc, NULL, gfc_resolve_minloc, ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, msk, BT_LOGICAL, dl, OPTIONAL); make_generic ("minloc", GFC_ISYM_MINLOC, GFC_STD_F95); add_sym_3red ("minval", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_minval_maxval, NULL, gfc_resolve_minval, ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, msk, BT_LOGICAL, dl, OPTIONAL); make_generic ("minval", GFC_ISYM_MINVAL, GFC_STD_F95); add_sym_2 ("mod", 1, 1, BT_INTEGER, di, GFC_STD_F77, gfc_check_a_p, gfc_simplify_mod, gfc_resolve_mod, a, BT_INTEGER, di, REQUIRED, p, BT_INTEGER, di, REQUIRED); add_sym_2 ("amod", 1, 1, BT_REAL, dr, GFC_STD_F77, NULL, gfc_simplify_mod, gfc_resolve_mod, a, BT_REAL, dr, REQUIRED, p, BT_REAL, dr, REQUIRED); add_sym_2 ("dmod", 1, 1, BT_REAL, dd, GFC_STD_F77, NULL, gfc_simplify_mod, gfc_resolve_mod, a, BT_REAL, dd, REQUIRED, p, BT_REAL, dd, REQUIRED); make_generic ("mod", GFC_ISYM_MOD, GFC_STD_F77); add_sym_2 ("modulo", 1, 1, BT_REAL, di, GFC_STD_F95, gfc_check_a_p, gfc_simplify_modulo, gfc_resolve_modulo, a, BT_REAL, di, REQUIRED, p, BT_REAL, di, REQUIRED); make_generic ("modulo", GFC_ISYM_MODULO, GFC_STD_F95); add_sym_2 ("nearest", 1, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_nearest, gfc_simplify_nearest, gfc_resolve_nearest, x, BT_REAL, dr, REQUIRED, s, BT_REAL, dr, REQUIRED); make_generic ("nearest", GFC_ISYM_NEAREST, GFC_STD_F95); add_sym_2 ("nint", 1, 1, BT_INTEGER, di, GFC_STD_F77, gfc_check_a_ikind, gfc_simplify_nint, gfc_resolve_nint, a, BT_REAL, dr, REQUIRED, kind, BT_INTEGER, di, OPTIONAL); add_sym_1 ("idnint", 1, 1, BT_INTEGER, di, GFC_STD_F77, gfc_check_idnint, gfc_simplify_idnint, gfc_resolve_idnint, a, BT_REAL, dd, REQUIRED); make_generic ("nint", GFC_ISYM_NINT, GFC_STD_F77); add_sym_1 ("not", 1, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_i, gfc_simplify_not, gfc_resolve_not, i, BT_INTEGER, di, REQUIRED); make_generic ("not", GFC_ISYM_NOT, GFC_STD_F95); add_sym_1 ("null", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_null, gfc_simplify_null, NULL, mo, BT_INTEGER, di, OPTIONAL); make_generic ("null", GFC_ISYM_NONE, GFC_STD_F95); add_sym_3 ("pack", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_pack, NULL, gfc_resolve_pack, ar, BT_REAL, dr, REQUIRED, msk, BT_LOGICAL, dl, REQUIRED, v, BT_REAL, dr, OPTIONAL); make_generic ("pack", GFC_ISYM_PACK, GFC_STD_F95); add_sym_1 ("precision", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_precision, gfc_simplify_precision, NULL, x, BT_UNKNOWN, 0, REQUIRED); make_generic ("precision", GFC_ISYM_NONE, GFC_STD_F95); add_sym_1 ("present", 0, 1, BT_LOGICAL, dl, GFC_STD_F95, gfc_check_present, NULL, NULL, a, BT_REAL, dr, REQUIRED); make_generic ("present", GFC_ISYM_PRESENT, GFC_STD_F95); add_sym_3red ("product", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_product_sum, NULL, gfc_resolve_product, ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL, msk, BT_LOGICAL, dl, OPTIONAL); make_generic ("product", GFC_ISYM_PRODUCT, GFC_STD_F95); add_sym_1 ("radix", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_radix, gfc_simplify_radix, NULL, x, BT_UNKNOWN, 0, REQUIRED); make_generic ("radix", GFC_ISYM_NONE, GFC_STD_F95); /* The following function is for G77 compatibility. */ add_sym_1 ("rand", 0, 1, BT_REAL, 4, GFC_STD_GNU, gfc_check_rand, NULL, NULL, i, BT_INTEGER, 4, OPTIONAL); /* Compatibility with HP FORTRAN 77/iX Reference. Note, rand() and ran() use slightly different shoddy multiplicative congruential PRNG. */ make_alias ("ran", GFC_STD_GNU); make_generic ("rand", GFC_ISYM_RAND, GFC_STD_GNU); add_sym_1 ("range", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_range, gfc_simplify_range, NULL, x, BT_REAL, dr, REQUIRED); make_generic ("range", GFC_ISYM_NONE, GFC_STD_F95); add_sym_2 ("real", 1, 0, BT_REAL, dr, GFC_STD_F77, gfc_check_real, gfc_simplify_real, gfc_resolve_real, a, BT_UNKNOWN, dr, REQUIRED, kind, BT_INTEGER, di, OPTIONAL); /* This provides compatibility with g77. */ add_sym_1 ("realpart", 1, 0, BT_REAL, dr, GFC_STD_GNU, gfc_check_fn_c, gfc_simplify_realpart, gfc_resolve_realpart, a, BT_UNKNOWN, dr, REQUIRED); add_sym_1 ("float", 1, 0, BT_REAL, dr, GFC_STD_F77, NULL, gfc_simplify_float, NULL, a, BT_INTEGER, di, REQUIRED); add_sym_1 ("sngl", 1, 0, BT_REAL, dr, GFC_STD_F77, NULL, gfc_simplify_sngl, NULL, a, BT_REAL, dd, REQUIRED); make_generic ("real", GFC_ISYM_REAL, GFC_STD_F77); add_sym_2 ("rename", 0, 1, BT_INTEGER, di, GFC_STD_GNU, gfc_check_rename, NULL, gfc_resolve_rename, a, BT_CHARACTER, dc, REQUIRED, b, BT_CHARACTER, dc, REQUIRED); make_generic ("rename", GFC_ISYM_RENAME, GFC_STD_GNU); add_sym_2 ("repeat", 0, 1, BT_CHARACTER, dc, GFC_STD_F95, gfc_check_repeat, gfc_simplify_repeat, gfc_resolve_repeat, stg, BT_CHARACTER, dc, REQUIRED, n, BT_INTEGER, di, REQUIRED); make_generic ("repeat", GFC_ISYM_REPEAT, GFC_STD_F95); add_sym_4 ("reshape", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_reshape, gfc_simplify_reshape, gfc_resolve_reshape, src, BT_REAL, dr, REQUIRED, shp, BT_INTEGER, ii, REQUIRED, pad, BT_REAL, dr, OPTIONAL, ord, BT_INTEGER, ii, OPTIONAL); make_generic ("reshape", GFC_ISYM_RESHAPE, GFC_STD_F95); add_sym_1 ("rrspacing", 1, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_x, gfc_simplify_rrspacing, gfc_resolve_rrspacing, x, BT_REAL, dr, REQUIRED); make_generic ("rrspacing", GFC_ISYM_RRSPACING, GFC_STD_F95); add_sym_2 ("scale", 1, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_scale, gfc_simplify_scale, gfc_resolve_scale, x, BT_REAL, dr, REQUIRED, i, BT_INTEGER, di, REQUIRED); make_generic ("scale", GFC_ISYM_SCALE, GFC_STD_F95); add_sym_3 ("scan", 1, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_scan, gfc_simplify_scan, gfc_resolve_scan, stg, BT_CHARACTER, dc, REQUIRED, set, BT_CHARACTER, dc, REQUIRED, bck, BT_LOGICAL, dl, OPTIONAL); make_generic ("scan", GFC_ISYM_SCAN, GFC_STD_F95); /* Added for G77 compatibility garbage. */ add_sym_0 ("second", 0, 1, BT_REAL, 4, GFC_STD_GNU, NULL, NULL, NULL); make_generic ("second", GFC_ISYM_SECOND, GFC_STD_GNU); /* Added for G77 compatibility. */ add_sym_1 ("secnds", 0, 1, BT_REAL, dr, GFC_STD_GNU, gfc_check_secnds, NULL, gfc_resolve_secnds, x, BT_REAL, dr, REQUIRED); make_generic ("secnds", GFC_ISYM_SECNDS, GFC_STD_GNU); add_sym_1 ("selected_int_kind", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_selected_int_kind, gfc_simplify_selected_int_kind, NULL, r, BT_INTEGER, di, REQUIRED); make_generic ("selected_int_kind", GFC_ISYM_SI_KIND, GFC_STD_F95); add_sym_2 ("selected_real_kind", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_selected_real_kind, gfc_simplify_selected_real_kind, NULL, p, BT_INTEGER, di, OPTIONAL, r, BT_INTEGER, di, OPTIONAL); make_generic ("selected_real_kind", GFC_ISYM_SR_KIND, GFC_STD_F95); add_sym_2 ("set_exponent", 1, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_set_exponent, gfc_simplify_set_exponent, gfc_resolve_set_exponent, x, BT_REAL, dr, REQUIRED, i, BT_INTEGER, di, REQUIRED); make_generic ("set_exponent", GFC_ISYM_SET_EXPONENT, GFC_STD_F95); add_sym_1 ("shape", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_shape, gfc_simplify_shape, gfc_resolve_shape, src, BT_REAL, dr, REQUIRED); make_generic ("shape", GFC_ISYM_SHAPE, GFC_STD_F95); add_sym_2 ("sign", 1, 1, BT_REAL, dr, GFC_STD_F77, gfc_check_sign, gfc_simplify_sign, gfc_resolve_sign, a, BT_REAL, dr, REQUIRED, b, BT_REAL, dr, REQUIRED); add_sym_2 ("isign", 1, 1, BT_INTEGER, di, GFC_STD_F77, NULL, gfc_simplify_sign, gfc_resolve_sign, a, BT_INTEGER, di, REQUIRED, b, BT_INTEGER, di, REQUIRED); add_sym_2 ("dsign", 1, 1, BT_REAL, dd, GFC_STD_F77, NULL, gfc_simplify_sign, gfc_resolve_sign, a, BT_REAL, dd, REQUIRED, b, BT_REAL, dd, REQUIRED); make_generic ("sign", GFC_ISYM_SIGN, GFC_STD_F77); add_sym_2 ("signal", 1, 1, BT_INTEGER, di, GFC_STD_GNU, gfc_check_signal, NULL, gfc_resolve_signal, num, BT_INTEGER, di, REQUIRED, han, BT_UNKNOWN, 0, REQUIRED); make_generic ("signal", GFC_ISYM_SIGNAL, GFC_STD_GNU); add_sym_1 ("sin", 1, 1, BT_REAL, dr, GFC_STD_F77, gfc_check_fn_rc, gfc_simplify_sin, gfc_resolve_sin, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dsin", 1, 1, BT_REAL, dd, GFC_STD_F77, NULL, gfc_simplify_sin, gfc_resolve_sin, x, BT_REAL, dd, REQUIRED); add_sym_1 ("csin", 1, 1, BT_COMPLEX, dz, GFC_STD_F77, NULL, gfc_simplify_sin, gfc_resolve_sin, x, BT_COMPLEX, dz, REQUIRED); add_sym_1 ("zsin", 1, 1, BT_COMPLEX, dd, GFC_STD_GNU, NULL, gfc_simplify_sin, gfc_resolve_sin, x, BT_COMPLEX, dd, REQUIRED); make_alias ("cdsin", GFC_STD_GNU); make_generic ("sin", GFC_ISYM_SIN, GFC_STD_F77); add_sym_1 ("sinh", 1, 1, BT_REAL, dr, GFC_STD_F77, gfc_check_fn_r, gfc_simplify_sinh, gfc_resolve_sinh, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dsinh", 1, 1, BT_REAL, dd, GFC_STD_F77, NULL, gfc_simplify_sinh, gfc_resolve_sinh, x, BT_REAL, dd, REQUIRED); make_generic ("sinh", GFC_ISYM_SINH, GFC_STD_F77); add_sym_2 ("size", 0, 1, BT_INTEGER, di, GFC_STD_F95, gfc_check_size, gfc_simplify_size, NULL, ar, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, OPTIONAL); make_generic ("size", GFC_ISYM_SIZE, GFC_STD_F95); add_sym_1 ("spacing", 1, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_x, gfc_simplify_spacing, gfc_resolve_spacing, x, BT_REAL, dr, REQUIRED); make_generic ("spacing", GFC_ISYM_SPACING, GFC_STD_F95); add_sym_3 ("spread", 0, 1, BT_REAL, dr, GFC_STD_F95, gfc_check_spread, NULL, gfc_resolve_spread, src, BT_REAL, dr, REQUIRED, dm, BT_INTEGER, ii, REQUIRED, n, BT_INTEGER, di, REQUIRED); make_generic ("spread", GFC_ISYM_SPREAD, GFC_STD_F95); add_sym_1 ("sqrt", 1, 1, BT_REAL, dr, GFC_STD_F77, gfc_check_fn_rc, gfc_simplify_sqrt, gfc_resolve_sqrt, x, BT_REAL, dr, REQUIRED); add_sym_1 ("dsqrt", 1, 1, BT_REAL, dd, GFC_STD_F77, NULL, gfc_simplify_sqrt, gfc_resolve_sqrt, x, BT_REAL, dd, REQUIRED); add_sym_1 ("csqrt", 1, 1, BT_COMPLEX, dz, GFC_STD_F77, NULL, gfc_simplify_sqrt, gfc_resolve_sqrt, x, BT_COMPLEX, dz, REQUIRED); add_sym_1 ("zsqrt", 1, 1, BT_COMPLEX, dd, GFC_STD_GNU, NULL, gfc_simplify_sqrt, gfc_resolve_sqrt,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -