@@ -72,7 +72,7 @@ template <typename From, typename To>
7272[[nodiscard]] auto
7373convert (J jt, array w, void *yv) -> bool {
7474 if constexpr (std::is_same_v<To, Z>) {
75- return convert<From, To>(jt, w, yv, [](auto v) { return To{.re = static_cast <D >(v), .im = {}}; });
75+ return convert<From, To>(jt, w, yv, [](auto v) { return To{.re = static_cast <double >(v), .im = {}}; });
7676 } else if constexpr (!in_range<To, From>()) {
7777 return convert<From, To>(jt, w, yv, [](auto v) { return value_if (in_range<To>(v), v); });
7878 } else {
@@ -85,41 +85,41 @@ convert(J jt, array w, void *yv) -> bool {
8585
8686template <>
8787[[nodiscard]] auto
88- convert<D , bool >(J jt, array w, void *yv, D fuzz) -> bool {
88+ convert<double , bool >(J jt, array w, void *yv, double fuzz) -> bool {
8989 auto const infinity = [](auto p) { return p < -2 || 2 < p; };
90- return convert<D , bool >(
90+ return convert<double , bool >(
9191 jt, w, yv, [&](auto p) { return value_if (!infinity (p) && (p == 0.0 || fuzzy_equal (p, 1.0 , fuzz)), p != 0.0 ); });
9292}
9393
9494template <>
9595[[nodiscard]] auto
96- convert<D, I >(J jt, array w, void *yv, D fuzz) -> bool {
97- return convert<D, I >(jt, w, yv, [&](auto p) -> std::optional<I > {
96+ convert<double , int64_t >(J jt, array w, void *yv, double fuzz) -> bool {
97+ return convert<double , int64_t >(jt, w, yv, [&](auto p) -> std::optional<int64_t > {
9898 auto const q = jround (p);
9999 if (!(p == q || fuzzy_equal (p, q, fuzz))) {
100100 return std::nullopt ; // must equal int, possibly out of range
101101 }
102102 // out-of-range values don't convert, handle separately
103- if (p < static_cast <D >(IMIN)) {
103+ if (p < static_cast <double >(IMIN)) {
104104 return value_if (p >= IMIN * (1 + fuzz), IMIN);
105105 } // if tolerantly < IMIN, error; else take IMIN
106106 else if (p >= FLIMAX) {
107- return value_if (p <= -static_cast <D >(IMIN) * (1 + fuzz), IMAX);
107+ return value_if (p <= -static_cast <double >(IMIN) * (1 + fuzz), IMAX);
108108 } // if tolerantly > IMAX, error; else take IMAX
109109 return q;
110110 });
111111}
112112
113113template <>
114114[[nodiscard]] auto
115- convert<Z, D >(J jt, array w, void *yv, D fuzz) -> bool {
115+ convert<Z, double >(J jt, array w, void *yv, double fuzz) -> bool {
116116 if (fuzz != 0.0 ) {
117- return convert<Z, D >(jt, w, yv, [&](auto const &v) {
117+ return convert<Z, double >(jt, w, yv, [&](auto const &v) {
118118 auto const d = std::abs (v.im );
119119 return value_if (d != inf && d <= fuzz * std::abs (v.re ), v.re );
120120 });
121121 }
122- return convert<Z, D >(jt, w, yv, [](auto v) { return value_if (!v.im , v.re ); });
122+ return convert<Z, double >(jt, w, yv, [](auto v) { return value_if (!v.im , v.re ); });
123123}
124124
125125template <>
@@ -143,8 +143,8 @@ inplace_negate(T *u, int64_t n) {
143143
144144template <>
145145[[nodiscard]] auto
146- convert<I , X>(J jt, array w, void *yv) -> bool {
147- I u[XIDIG];
146+ convert<int64_t , X>(J jt, array w, void *yv) -> bool {
147+ int64_t u[XIDIG];
148148 auto const convert_one = [&](auto c) {
149149 auto const b = c == IMIN;
150150 auto d = b ? -(1 + c) : std::abs (c);
@@ -159,13 +159,13 @@ convert<I, X>(J jt, array w, void *yv) -> bool {
159159 if (0 > c) { inplace_negate (u, XIDIG); }
160160 return jtvec (jt, INT, length, u);
161161 };
162- return convert<I , X>(jt, w, yv, convert_one) && !jt->jerr ;
162+ return convert<int64_t , X>(jt, w, yv, convert_one) && !jt->jerr ;
163163}
164164
165165static auto
166- jtxd1 (J jt, D p, I mode) -> X {
166+ jtxd1 (J jt, double p, int64_t mode) -> X {
167167 PROLOG (0052 );
168- D e = jttfloor (jt, p);
168+ double e = jttfloor (jt, p);
169169 switch (mode) {
170170 case XMFLR: p = e; break ;
171171 case XMCEIL: p = ceil (p); break ;
@@ -186,7 +186,7 @@ jtxd1(J jt, D p, I mode) -> X {
186186 while (0 < d) {
187187 auto const q = floor (d / XBASE);
188188 auto const r = d - q * XBASE;
189- u[m++] = static_cast <I >(r);
189+ u[m++] = static_cast <int64_t >(r);
190190 d = q;
191191 if (m == AN (t)) {
192192 RZ (t = jtext (jt, 0 , t));
@@ -205,8 +205,8 @@ jtxd1(J jt, D p, I mode) -> X {
205205
206206template <>
207207[[nodiscard]] auto
208- convert<D , X>(J jt, array w, void *yv, I mode) -> bool {
209- return convert<D , X>(jt, w, yv, [=](auto v) { return jtxd1 (jt, v, mode); }) && !jt->jerr ;
208+ convert<double , X>(J jt, array w, void *yv, int64_t mode) -> bool {
209+ return convert<double , X>(jt, w, yv, [=](auto v) { return jtxd1 (jt, v, mode); }) && !jt->jerr ;
210210}
211211
212212template <>
@@ -228,21 +228,21 @@ value_from_X(X p) -> T {
228228
229229template <>
230230[[nodiscard]] auto
231- convert<X, I >(J jt, array w, void *yv) -> bool {
231+ convert<X, int64_t >(J jt, array w, void *yv) -> bool {
232232 X p = jtxc (jt, IMAX);
233233 if (!p) return false ;
234234 X q = jtxminus (jt, jtnegate (jt, p), jtxc (jt, 1L ));
235235 if (!q) return false ;
236- return convert<X, I >(jt, w, yv, [&](auto c) -> std::optional<int64_t > {
236+ return convert<X, int64_t >(jt, w, yv, [&](auto c) -> std::optional<int64_t > {
237237 if (!(1 != jtxcompare (jt, q, c) && 1 != jtxcompare (jt, c, p))) return std::nullopt ;
238238 return value_from_X<int64_t >(c);
239239 });
240240}
241241
242242template <>
243243[[nodiscard]] auto
244- convert<X, D >(J jt, array w, void *yv) -> bool {
245- return convert<X, D >(jt, w, yv, [](auto p) {
244+ convert<X, double >(J jt, array w, void *yv) -> bool {
245+ return convert<X, double >(jt, w, yv, [](auto p) {
246246 auto const c = pointer_to_values<int64_t >(p)[AN (p) - 1 ];
247247 if (c == XPINF) { return inf; }
248248 if (c == XNINF) { return infm; }
@@ -258,12 +258,12 @@ convert<X, Q>(J jt, array w, void *yv) -> bool {
258258
259259template <>
260260[[nodiscard]] auto
261- convert<D , Q>(J jt, array w, void *yv, I mode) -> bool {
261+ convert<double , Q>(J jt, array w, void *yv, int64_t mode) -> bool {
262262 if ((w) == nullptr ) return false ;
263263 auto const n = AN (w);
264264 auto *const wv = pointer_to_values<double >(w);
265265 auto *x = static_cast <Q *>(yv);
266- D t = NAN;
266+ double t = NAN;
267267 auto *tv = 3 + reinterpret_cast <S *>(&t);
268268 Q q;
269269 for (int64_t i = 0 ; i < n; ++i) {
@@ -287,7 +287,7 @@ convert<D, Q>(J jt, array w, void *yv, I mode) -> bool {
287287 } else {
288288 bool const recip = 1 > t;
289289 if (recip) { t = 1.0 / t; }
290- auto e = static_cast <I >(0xfff0 & *tv);
290+ auto e = static_cast <int64_t >(0xfff0 & *tv);
291291 e >>= 4 ;
292292 e -= 1023 ;
293293 if (recip) {
@@ -306,8 +306,8 @@ convert<D, Q>(J jt, array w, void *yv, I mode) -> bool {
306306
307307template <>
308308[[nodiscard]] auto
309- convert<Q, D >(J jt, array w, void *yv) -> bool {
310- auto const xb = static_cast <D >(XBASE);
309+ convert<Q, double >(J jt, array w, void *yv) -> bool {
310+ auto const xb = static_cast <double >(XBASE);
311311 auto const nn = 308 / XBASEN;
312312
313313 // TODO: figure out nice algorithm for this
@@ -322,7 +322,7 @@ convert<Q, D>(J jt, array w, void *yv) -> bool {
322322 };
323323
324324 X x2 = nullptr ;
325- return convert<Q, D >(jt, w, yv, [&](auto nd) -> std::optional<D > {
325+ return convert<Q, double >(jt, w, yv, [&](auto nd) -> std::optional<double > {
326326 auto *const p = nd.n ;
327327 auto const pn = AN (p);
328328 auto const kk = 1 == pn ? pointer_to_values<int64_t >(p)[0 ] : 0 ;
@@ -359,9 +359,9 @@ convert<Q, X>(J jt, array w, void *yv) -> bool {
359359// 0 if error, 1 if success. If the conversion loses precision, error is returned
360360// Calls through bcvt are tagged with a flag in jt, indicating to set fuzz=0
361361auto
362- jtccvt (J jt, I tflagged, array w, array *y) -> bool {
362+ jtccvt (J jt, int64_t tflagged, array w, array *y) -> bool {
363363 FPREFIP;
364- I const t = tflagged & NOUN;
364+ int64_t const t = tflagged & NOUN;
365365 if (w == nullptr ) return false ;
366366 auto const r = AR (w);
367367 auto *const s = AS (w);
@@ -376,7 +376,7 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
376376 jt->ranks = oqr;
377377 return true ; // dense to sparse; convert type first (even if same dtype)
378378 case 3 : // sparse to sparse
379- I t1 = DTYPE (t);
379+ int64_t t1 = DTYPE (t);
380380 GASPARSE (*y, t, 1 , r, s);
381381 P *yp = pointer_to_values<P>(*y);
382382 P *wp = pointer_to_values<P>(w);
@@ -406,14 +406,14 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
406406 if (!d) return false ;
407407 auto *yv = pointer_to_values<void >(d); // allocate the same # atoms, even if we will convert fewer
408408 if ((tflagged & NOUNCVTVALIDCT) != 0 ) {
409- I inputn = *reinterpret_cast <I *>(y); // fetch input, in case it is called for
410- if (inputn > 0 ) { // if converting the leading values, just update the counts
411- n = inputn; // set the counts for local use, and in the block to be converted
412- } else { // if converting trailing values...
409+ int64_t inputn = *reinterpret_cast <int64_t *>(y); // fetch input, in case it is called for
410+ if (inputn > 0 ) { // if converting the leading values, just update the counts
411+ n = inputn; // set the counts for local use, and in the block to be converted
412+ } else { // if converting trailing values...
413413 AK (w) += (n + inputn) << bplg (wt);
414- yv = reinterpret_cast <I *>(static_cast <C *>(yv) +
415- ((n + inputn) << bplg (t))); // advance input and output pointers to new area
416- n = -inputn; // get positive # atoms to convert
414+ yv = reinterpret_cast <int64_t *>(
415+ static_cast <C *>(yv) + ((n + inputn) << bplg (t))); // advance input and output pointers to new area
416+ n = -inputn; // get positive # atoms to convert
417417 }
418418 AN (w) = n; // change atomct of w to # atoms to convert
419419 }
@@ -451,66 +451,73 @@ jtccvt(J jt, I tflagged, array w, array *y) -> bool {
451451 return convert<bool , X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, Q>(jt, d, yv);
452452 case CVCASE (FLX, B01X): return convert<bool , double >(jt, w, yv);
453453 case CVCASE (CMPXX, B01X): return convert<bool , Z>(jt, w, yv);
454- case CVCASE (B01X, INTX): return convert<I , bool >(jt, w, yv);
455- case CVCASE (XNUMX, INTX): return convert<I , X>(jt, w, yv);
454+ case CVCASE (B01X, INTX): return convert<int64_t , bool >(jt, w, yv);
455+ case CVCASE (XNUMX, INTX): return convert<int64_t , X>(jt, w, yv);
456456 case CVCASE (RATX, INTX):
457457 GATV (d, XNUM, n, r, s);
458- return convert<I , X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, Q>(jt, d, yv);
458+ return convert<int64_t , X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, Q>(jt, d, yv);
459459 case CVCASE (FLX, INTX): return convert<int64_t , double >(jt, w, yv);
460460 case CVCASE (CMPXX, INTX): return convert<int64_t , Z>(jt, w, yv);
461- case CVCASE (B01X, FLX): return convert<D, bool >(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
462- case CVCASE (INTX, FLX): return convert<D, I>(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
461+ case CVCASE (B01X, FLX):
462+ return convert<double , bool >(jt, w, yv, ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
463+ case CVCASE (INTX, FLX):
464+ return convert<double , int64_t >(jt, w, yv, ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
463465 case CVCASE (XNUMX, FLX):
464- return convert<D , X>(
465- jt, w, yv, (jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX));
466+ return convert<double , X>(
467+ jt, w, yv, int64_t { (jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX)} );
466468 case CVCASE (RATX, FLX):
467- return convert<D , Q>(
468- jt, w, yv, (jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX));
469- case CVCASE (CMPXX, FLX): return convert<D , Z>(jt, w, yv);
469+ return convert<double , Q>(
470+ jt, w, yv, int64_t { (jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX)} );
471+ case CVCASE (CMPXX, FLX): return convert<double , Z>(jt, w, yv);
470472 case CVCASE (B01X, CMPXX):
471473 GATV (d, FL, n, r, s);
472- return convert<Z, D>(jt, w, pointer_to_values<int64_t >(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
473- convert<D, bool >(jt, d, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
474+ return convert<Z, double >(
475+ jt, w, pointer_to_values<int64_t >(d), ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
476+ convert<double , bool >(jt, d, yv, ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
474477 case CVCASE (INTX, CMPXX):
475478 GATV (d, FL, n, r, s);
476- return convert<Z, D>(jt, w, pointer_to_values<int64_t >(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
477- convert<D, I>(jt, d, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
479+ return convert<Z, double >(
480+ jt, w, pointer_to_values<int64_t >(d), ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
481+ convert<double , int64_t >(jt, d, yv, ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
478482 case CVCASE (XNUMX, CMPXX):
479483 GATV (d, FL, n, r, s);
480- return convert<Z, D>(jt, w, pointer_to_values<int64_t >(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
481- convert<D, X>(
482- jt, d, yv, (jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX));
484+ return convert<Z, double >(
485+ jt, w, pointer_to_values<int64_t >(d), ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
486+ convert<double , X>(
487+ jt, d, yv, int64_t {(jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX)});
483488 case CVCASE (RATX, CMPXX):
484489 GATV (d, FL, n, r, s);
485- return convert<Z, D>(jt, w, pointer_to_values<int64_t >(d), ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
486- convert<D, Q>(
487- jt, d, yv, (jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX));
488- case CVCASE (FLX, CMPXX): return convert<Z, D>(jt, w, yv, ((I)jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
490+ return convert<Z, double >(
491+ jt, w, pointer_to_values<int64_t >(d), ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ) &&
492+ convert<double , Q>(
493+ jt, d, yv, int64_t {(jt->xmode & REPSGN (SGNIFNOT (tflagged, XCVTXNUMORIDEX))) | (tflagged >> XCVTXNUMCVX)});
494+ case CVCASE (FLX, CMPXX):
495+ return convert<Z, double >(jt, w, yv, ((int64_t )jtinplace & JTNOFUZZ) != 0 ? 0.0 : FUZZ);
489496 case CVCASE (B01X, XNUMX): return convert<X, bool >(jt, w, yv);
490- case CVCASE (INTX, XNUMX): return convert<X, I >(jt, w, yv);
497+ case CVCASE (INTX, XNUMX): return convert<X, int64_t >(jt, w, yv);
491498 case CVCASE (RATX, XNUMX): return convert<X, Q>(jt, w, yv);
492- case CVCASE (FLX, XNUMX): return convert<X, D >(jt, w, yv);
499+ case CVCASE (FLX, XNUMX): return convert<X, double >(jt, w, yv);
493500 case CVCASE (CMPXX, XNUMX):
494501 GATV (d, FL, n, r, s);
495- return convert<X, D >(jt, w, pointer_to_values<int64_t >(d)) && convert<D , Z>(jt, d, yv);
502+ return convert<X, double >(jt, w, pointer_to_values<int64_t >(d)) && convert<double , Z>(jt, d, yv);
496503 case CVCASE (B01X, RATX):
497504 GATV (d, XNUM, n, r, s);
498505 return convert<Q, X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, bool >(jt, d, yv);
499506 case CVCASE (INTX, RATX):
500507 GATV (d, XNUM, n, r, s);
501- return convert<Q, X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, I >(jt, d, yv);
508+ return convert<Q, X>(jt, w, pointer_to_values<int64_t >(d)) && convert<X, int64_t >(jt, d, yv);
502509 case CVCASE (XNUMX, RATX): return convert<Q, X>(jt, w, yv);
503- case CVCASE (FLX, RATX): return convert<Q, D >(jt, w, yv);
510+ case CVCASE (FLX, RATX): return convert<Q, double >(jt, w, yv);
504511 case CVCASE (CMPXX, RATX):
505512 GATV (d, FL, n, r, s);
506- return convert<Q, D >(jt, w, pointer_to_values<int64_t >(d)) && convert<D , Z>(jt, d, yv);
513+ return convert<Q, double >(jt, w, pointer_to_values<int64_t >(d)) && convert<double , Z>(jt, d, yv);
507514 default : ASSERT (0 , EVDOMAIN);
508515 }
509516}
510517
511518// clear rank before calling ccvt - needed for sparse arrays only but returns the block as the result
512519auto
513- jtcvt (J jt, I t, array w) -> array {
520+ jtcvt (J jt, int64_t t, array w) -> array {
514521 array y = nullptr ;
515522 bool const b = jtccvt (jt, t, w, &y);
516523 ASSERT (b, EVDOMAIN);
@@ -526,7 +533,7 @@ jtbcvt(J jt, C mode, array w) -> array {
526533 FPREFIP;
527534 if (w == nullptr ) { return nullptr ; }
528535
529- auto const as_integer = [](auto const &v) { return *(I *)&v; };
536+ auto const as_integer = [](auto const &v) { return *(int64_t *)&v; };
530537 auto const isflag = [&](auto const &z) { return as_integer (z.im ) == NANFLAG; };
531538
532539 // there may be values (especially b types) that were nominally CMPX but might actually be integers. Those were
@@ -541,15 +548,15 @@ jtbcvt(J jt, C mode, array w) -> array {
541548 // auto flags = std::transform_reduce(wv, wv + AN(w), int64_t{}, std::plus{}, isflag);
542549 auto flags = std::accumulate (wv, wv + AN (w), int64_t {}, [&](auto sum, auto v) { return sum + isflag (v); });
543550 if (flags != 0 ) {
544- I ipok = SGNIF (jtinplace, JTINPLACEWX) & AC (w); // both sign bits set (<0) if inplaceable
551+ int64_t ipok = SGNIF (jtinplace, JTINPLACEWX) & AC (w); // both sign bits set (<0) if inplaceable
545552 if (flags == AN (w)) {
546553 if (ipok >= 0 ) GATV (result, INT, AN (w), AR (w), AS (w));
547554 std::transform (
548555 wv, wv + AN (w), pointer_to_values<int64_t >(result), [&](auto const &z) { return as_integer (z.re ); });
549556 } else {
550557 if (ipok >= 0 ) GATV (result, CMPX, AN (w), AR (w), AS (w));
551558 std::transform (wv, wv + AN (w), pointer_to_values<Z>(result), [&](auto const &z) -> Z {
552- if (isflag (z)) { return {.re = (D )as_integer (z.re ), .im = 0.0 }; };
559+ if (isflag (z)) { return {.re = (double )as_integer (z.re ), .im = 0.0 }; };
553560 return z; // copy floats, and converts any integers back to float
554561 });
555562 }
@@ -561,7 +568,7 @@ jtbcvt(J jt, C mode, array w) -> array {
561568 // To avoid a needless copy, suppress conversion to B01 if type is B01, to INT if type is INT, etc
562569 // set the NOFUZZ flag in jt to insist on an exact match so we won't lose precision
563570 array y = nullptr ;
564- jtinplace = (J)((I )jt + JTNOFUZZ); // demand exact match
571+ jtinplace = (J)((int64_t )jt + JTNOFUZZ); // demand exact match
565572 result = ((mode & 14 ) == 0 ) && jtccvt (jtinplace, B01, w, &y) ? y
566573 : (y = w, AT (w) & INT || (((mode & 12 ) == 0 ) && jtccvt (jtinplace, INT, w, &y))) ? y
567574 : (y = w, AT (w) & FL || (((mode & 8 ) == 0 ) && jtccvt (jtinplace, FL, w, &y)))
@@ -582,7 +589,7 @@ jticvt(J jt, array w) -> array {
582589}
583590
584591auto
585- jtpcvt (J jt, I t, array w) -> array {
592+ jtpcvt (J jt, int64_t t, array w) -> array {
586593 RANK2T oqr = jt->ranks ;
587594 RESETRANK;
588595 array y = nullptr ;
@@ -611,7 +618,7 @@ jtxco1(J jt, array w) -> array {
611618auto
612619jtxco2 (J jt, array a, array w) -> array {
613620 ASSERT (AT (w) & DENSE, EVNONCE);
614- I j = jti0 (jt, a);
621+ int64_t j = jti0 (jt, a);
615622 if (jt->jerr != 0 ) return nullptr ;
616623 switch (j) {
617624 case -2 : return jtaslash1 (jt, CDIV, w);
0 commit comments