| 3151 | #undef make_dragon4_typefuncs_inner |
| 3152 | |
| 3153 | PyObject * |
| 3154 | Dragon4_Positional(PyObject *obj, DigitMode digit_mode, CutoffMode cutoff_mode, |
| 3155 | int precision, int min_digits, int sign, TrimMode trim, |
| 3156 | int pad_left, int pad_right) |
| 3157 | { |
| 3158 | npy_double val; |
| 3159 | Dragon4_Options opt; |
| 3160 | |
| 3161 | opt.scientific = 0; |
| 3162 | opt.digit_mode = digit_mode; |
| 3163 | opt.cutoff_mode = cutoff_mode; |
| 3164 | opt.precision = precision; |
| 3165 | opt.min_digits = min_digits; |
| 3166 | opt.sign = sign; |
| 3167 | opt.trim_mode = trim; |
| 3168 | opt.digits_left = pad_left; |
| 3169 | opt.digits_right = pad_right; |
| 3170 | opt.exp_digits = -1; |
| 3171 | |
| 3172 | if (PyArray_IsScalar(obj, Half)) { |
| 3173 | npy_half x = PyArrayScalar_VAL(obj, Half); |
| 3174 | return Dragon4_Positional_Half_opt(&x, &opt); |
| 3175 | } |
| 3176 | else if (PyArray_IsScalar(obj, Float)) { |
| 3177 | npy_float x = PyArrayScalar_VAL(obj, Float); |
| 3178 | return Dragon4_Positional_Float_opt(&x, &opt); |
| 3179 | } |
| 3180 | else if (PyArray_IsScalar(obj, Double)) { |
| 3181 | npy_double x = PyArrayScalar_VAL(obj, Double); |
| 3182 | return Dragon4_Positional_Double_opt(&x, &opt); |
| 3183 | } |
| 3184 | else if (PyArray_IsScalar(obj, LongDouble)) { |
| 3185 | npy_longdouble x = PyArrayScalar_VAL(obj, LongDouble); |
| 3186 | return Dragon4_Positional_LongDouble_opt(&x, &opt); |
| 3187 | } |
| 3188 | |
| 3189 | val = PyFloat_AsDouble(obj); |
| 3190 | if (PyErr_Occurred()) { |
| 3191 | return NULL; |
| 3192 | } |
| 3193 | return Dragon4_Positional_Double_opt(&val, &opt); |
| 3194 | } |
| 3195 | |
| 3196 | PyObject * |
| 3197 | Dragon4_Scientific(PyObject *obj, DigitMode digit_mode, int precision, |
no outgoing calls
no test coverage detected