30int f_round(
int argc,
const int *argt,
void **args)
32 const DCELL *arg1 = args[1];
40 if (argc == 1 && argt[0] != CELL_TYPE)
42 if (argt[1] != DCELL_TYPE)
44 if (argc > 1 && argt[2] != DCELL_TYPE)
46 if (argc > 2 && argt[3] != DCELL_TYPE)
53 if (IS_NULL_D(&arg1[i]))
56 DCELL
x = i_round(arg1[i], 1.0, 0.0);
57 if (
x > 2147483647.0 ||
x < -2147483647.0)
66 const DCELL *arg2 = args[2];
73 if (IS_NULL_D(&arg1[i]))
75 else if (IS_NULL_D(&arg2[i]))
78 DCELL
x = i_round(arg1[i], arg2[i], 0.0);
79 if (
x > 2147483647.0 ||
x < -2147483647.0)
91 if (IS_NULL_D(&arg1[i]))
93 else if (IS_NULL_D(&arg2[i]))
96 res[i] = (FCELL)i_round(arg1[i], arg2[i], 0.0);
100 DCELL *res = args[0];
103 if (IS_NULL_D(&arg1[i]))
105 else if (IS_NULL_D(&arg2[i]))
108 res[i] = (DCELL)i_round(arg1[i], arg2[i], 0.0);
115 else if (argc == 3) {
116 const DCELL *arg2 = args[2];
117 const DCELL *arg3 = args[3];
123 for (i = 0; i <
columns; i++) {
124 if (IS_NULL_D(&arg1[i]))
126 else if (IS_NULL_D(&arg2[i]))
128 else if (IS_NULL_D(&arg3[i]))
131 DCELL
x = i_round(arg1[i], arg2[i], arg3[i]);
132 if (
x > 2147483647.0 ||
x < -2147483647.0)
141 FCELL *res = args[0];
144 if (IS_NULL_D(&arg1[i]))
146 else if (IS_NULL_D(&arg2[i]))
148 else if (IS_NULL_D(&arg3[i]))
151 res[i] = (FCELL)i_round(arg1[i], arg2[i], arg3[i]);
155 DCELL *res = args[0];
158 if (IS_NULL_D(&arg1[i]))
160 else if (IS_NULL_D(&arg2[i]))
162 else if (IS_NULL_D(&arg3[i]))
165 res[i] = (DCELL)i_round(arg1[i], arg2[i], arg3[i]);