485 const nc_type dest_type,
const size_t len,
int *range_error,
486 const void *fill_value,
int strict_nc3,
int quantize_mode,
494 double mnt_log10_fabs;
496 double mss_val_cmp_dbl;
497 float mss_val_cmp_flt;
503 unsigned int *u32_ptr;
504 unsigned int msk_f32_u32_zro;
505 unsigned int msk_f32_u32_one;
506 unsigned int msk_f32_u32_hshv;
507 unsigned long long int *u64_ptr;
508 unsigned long long int msk_f64_u64_zro;
509 unsigned long long int msk_f64_u64_one;
510 unsigned long long int msk_f64_u64_hshv;
511 unsigned short prc_bnr_xpl_rqr;
519 signed char *bp, *bp1;
520 unsigned char *ubp, *ubp1;
521 unsigned short *usp, *usp1;
522 unsigned int *uip, *uip1;
523 long long *lip, *lip1;
524 unsigned long long *ulip, *ulip1;
528 LOG((3,
"%s: len %d src_type %d dest_type %d", __func__, len, src_type,
542 mss_val_cmp_flt = *(
float *)fill_value;
552 mss_val_cmp_dbl = *(
double *)fill_value;
573 prc_bnr_xpl_rqr = (
unsigned short)ceil(nsd * bit_per_dgt) + 1;
578 prc_bnr_xpl_rqr = (
unsigned short)nsd;
588 msk_f32_u32_zro = 0U;
589 msk_f32_u32_zro = ~msk_f32_u32_zro;
593 msk_f32_u32_zro <<= bit_xpl_nbr_zro;
597 msk_f32_u32_one = ~msk_f32_u32_zro;
600 msk_f32_u32_hshv=msk_f32_u32_one & (msk_f32_u32_zro >> 1);
608 msk_f64_u64_zro = 0UL;
609 msk_f64_u64_zro = ~msk_f64_u64_zro;
613 msk_f64_u64_zro <<= bit_xpl_nbr_zro;
617 msk_f64_u64_one =~ msk_f64_u64_zro;
620 msk_f64_u64_hshv = msk_f64_u64_one & (msk_f64_u64_zro >> 1);
642 for (cp = (
char *)src, cp1 = dest; count < len; count++)
646 LOG((0,
"%s: Unknown destination type.", __func__));
654 for (bp = (
signed char *)src, bp1 = dest; count < len; count++)
658 for (bp = (
signed char *)src, ubp = dest; count < len; count++)
662 *ubp++ = (
unsigned char)*bp++;
666 for (bp = (
signed char *)src, sp = dest; count < len; count++)
670 for (bp = (
signed char *)src, usp = dest; count < len; count++)
674 *usp++ = (
unsigned short)*bp++;
678 for (bp = (
signed char *)src, ip = dest; count < len; count++)
682 for (bp = (
signed char *)src, uip = dest; count < len; count++)
686 *uip++ = (
unsigned int)*bp++;
690 for (bp = (
signed char *)src, lip = dest; count < len; count++)
694 for (bp = (
signed char *)src, ulip = dest; count < len; count++)
698 *ulip++ = (
unsigned long long)*bp++;
702 for (bp = (
signed char *)src, fp = dest; count < len; count++)
706 for (bp = (
signed char *)src, dp = dest; count < len; count++)
710 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
711 __func__, src_type, dest_type));
720 for (ubp = (
unsigned char *)src, bp = dest; count < len; count++)
722 if (!strict_nc3 && *ubp > X_SCHAR_MAX)
724 *bp++ = (
signed char)*ubp++;
728 for (ubp = (
unsigned char *)src, sp = dest; count < len; count++)
732 for (ubp = (
unsigned char *)src, ubp1 = dest; count < len; count++)
736 for (ubp = (
unsigned char *)src, usp = dest; count < len; count++)
740 for (ubp = (
unsigned char *)src, ip = dest; count < len; count++)
744 for (ubp = (
unsigned char *)src, uip = dest; count < len; count++)
748 for (ubp = (
unsigned char *)src, lip = dest; count < len; count++)
752 for (ubp = (
unsigned char *)src, ulip = dest; count < len; count++)
756 for (ubp = (
unsigned char *)src, fp = dest; count < len; count++)
760 for (ubp = (
unsigned char *)src, dp = dest; count < len; count++)
764 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
765 __func__, src_type, dest_type));
774 for (sp = (
short *)src, ubp = dest; count < len; count++)
776 if (*sp > X_UCHAR_MAX || *sp < 0)
778 *ubp++ = (
unsigned char)*sp++;
782 for (sp = (
short *)src, bp = dest; count < len; count++)
784 if (*sp > X_SCHAR_MAX || *sp < X_SCHAR_MIN)
786 *bp++ = (
signed char)*sp++;
790 for (sp = (
short *)src, sp1 = dest; count < len; count++)
794 for (sp = (
short *)src, usp = dest; count < len; count++)
798 *usp++ = (
unsigned short)*sp++;
802 for (sp = (
short *)src, ip = dest; count < len; count++)
806 for (sp = (
short *)src, uip = dest; count < len; count++)
810 *uip++ = (
unsigned int)*sp++;
814 for (sp = (
short *)src, lip = dest; count < len; count++)
818 for (sp = (
short *)src, ulip = dest; count < len; count++)
822 *ulip++ = (
unsigned long long)*sp++;
826 for (sp = (
short *)src, fp = dest; count < len; count++)
830 for (sp = (
short *)src, dp = dest; count < len; count++)
834 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
835 __func__, src_type, dest_type));
844 for (usp = (
unsigned short *)src, ubp = dest; count < len; count++)
846 if (*usp > X_UCHAR_MAX)
848 *ubp++ = (
unsigned char)*usp++;
852 for (usp = (
unsigned short *)src, bp = dest; count < len; count++)
854 if (*usp > X_SCHAR_MAX)
856 *bp++ = (
signed char)*usp++;
860 for (usp = (
unsigned short *)src, sp = dest; count < len; count++)
862 if (*usp > X_SHORT_MAX)
864 *sp++ = (
signed short)*usp++;
868 for (usp = (
unsigned short *)src, usp1 = dest; count < len; count++)
872 for (usp = (
unsigned short *)src, ip = dest; count < len; count++)
876 for (usp = (
unsigned short *)src, uip = dest; count < len; count++)
880 for (usp = (
unsigned short *)src, lip = dest; count < len; count++)
884 for (usp = (
unsigned short *)src, ulip = dest; count < len; count++)
888 for (usp = (
unsigned short *)src, fp = dest; count < len; count++)
892 for (usp = (
unsigned short *)src, dp = dest; count < len; count++)
896 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
897 __func__, src_type, dest_type));
906 for (ip = (
int *)src, ubp = dest; count < len; count++)
908 if (*ip > X_UCHAR_MAX || *ip < 0)
910 *ubp++ = (
unsigned char)*ip++;
914 for (ip = (
int *)src, bp = dest; count < len; count++)
916 if (*ip > X_SCHAR_MAX || *ip < X_SCHAR_MIN)
918 *bp++ = (
signed char)*ip++;
922 for (ip = (
int *)src, sp = dest; count < len; count++)
924 if (*ip > X_SHORT_MAX || *ip < X_SHORT_MIN)
926 *sp++ = (short)*ip++;
930 for (ip = (
int *)src, usp = dest; count < len; count++)
932 if (*ip > X_USHORT_MAX || *ip < 0)
934 *usp++ = (
unsigned short)*ip++;
938 for (ip = (
int *)src, ip1 = dest; count < len; count++)
940 if (*ip > X_INT_MAX || *ip < X_INT_MIN)
946 for (ip = (
int *)src, uip = dest; count < len; count++)
948 if (*ip > X_UINT_MAX || *ip < 0)
950 *uip++ = (
unsigned int)*ip++;
954 for (ip = (
int *)src, lip = dest; count < len; count++)
958 for (ip = (
int *)src, ulip = dest; count < len; count++)
962 *ulip++ = (
unsigned long long)*ip++;
966 for (ip = (
int *)src, fp = dest; count < len; count++)
967 *fp++ = (
float)*ip++;
970 for (ip = (
int *)src, dp = dest; count < len; count++)
971 *dp++ = (
double)*ip++;
974 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
975 __func__, src_type, dest_type));
984 for (uip = (
unsigned int *)src, ubp = dest; count < len; count++)
986 if (*uip > X_UCHAR_MAX)
988 *ubp++ = (
unsigned char)*uip++;
992 for (uip = (
unsigned int *)src, bp = dest; count < len; count++)
994 if (*uip > X_SCHAR_MAX)
996 *bp++ = (
signed char)*uip++;
1000 for (uip = (
unsigned int *)src, sp = dest; count < len; count++)
1002 if (*uip > X_SHORT_MAX)
1004 *sp++ = (
signed short)*uip++;
1008 for (uip = (
unsigned int *)src, usp = dest; count < len; count++)
1010 if (*uip > X_USHORT_MAX)
1012 *usp++ = (
unsigned short)*uip++;
1016 for (uip = (
unsigned int *)src, ip = dest; count < len; count++)
1018 if (*uip > X_INT_MAX)
1020 *ip++ = (int)*uip++;
1024 for (uip = (
unsigned int *)src, uip1 = dest; count < len; count++)
1026 if (*uip > X_UINT_MAX)
1032 for (uip = (
unsigned int *)src, lip = dest; count < len; count++)
1036 for (uip = (
unsigned int *)src, ulip = dest; count < len; count++)
1040 for (uip = (
unsigned int *)src, fp = dest; count < len; count++)
1041 *fp++ = (
float)*uip++;
1044 for (uip = (
unsigned int *)src, dp = dest; count < len; count++)
1048 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
1049 __func__, src_type, dest_type));
1058 for (lip = (
long long *)src, ubp = dest; count < len; count++)
1060 if (*lip > X_UCHAR_MAX || *lip < 0)
1062 *ubp++ = (
unsigned char)*lip++;
1066 for (lip = (
long long *)src, bp = dest; count < len; count++)
1068 if (*lip > X_SCHAR_MAX || *lip < X_SCHAR_MIN)
1070 *bp++ = (
signed char)*lip++;
1074 for (lip = (
long long *)src, sp = dest; count < len; count++)
1076 if (*lip > X_SHORT_MAX || *lip < X_SHORT_MIN)
1078 *sp++ = (short)*lip++;
1082 for (lip = (
long long *)src, usp = dest; count < len; count++)
1084 if (*lip > X_USHORT_MAX || *lip < 0)
1086 *usp++ = (
unsigned short)*lip++;
1090 for (lip = (
long long *)src, uip = dest; count < len; count++)
1092 if (*lip > X_UINT_MAX || *lip < 0)
1094 *uip++ = (
unsigned int)*lip++;
1098 for (lip = (
long long *)src, ip = dest; count < len; count++)
1100 if (*lip > X_INT_MAX || *lip < X_INT_MIN)
1102 *ip++ = (int)*lip++;
1106 for (lip = (
long long *)src, lip1 = dest; count < len; count++)
1110 for (lip = (
long long *)src, ulip = dest; count < len; count++)
1114 *ulip++ = (
unsigned long long)*lip++;
1118 for (lip = (
long long *)src, fp = dest; count < len; count++)
1119 *fp++ = (
float)*lip++;
1122 for (lip = (
long long *)src, dp = dest; count < len; count++)
1123 *dp++ = (
double)*lip++;
1126 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
1127 __func__, src_type, dest_type));
1136 for (ulip = (
unsigned long long *)src, ubp = dest; count < len; count++)
1138 if (*ulip > X_UCHAR_MAX)
1140 *ubp++ = (
unsigned char)*ulip++;
1144 for (ulip = (
unsigned long long *)src, bp = dest; count < len; count++)
1146 if (*ulip > X_SCHAR_MAX)
1148 *bp++ = (
signed char)*ulip++;
1152 for (ulip = (
unsigned long long *)src, sp = dest; count < len; count++)
1154 if (*ulip > X_SHORT_MAX)
1156 *sp++ = (short)*ulip++;
1160 for (ulip = (
unsigned long long *)src, usp = dest; count < len; count++)
1162 if (*ulip > X_USHORT_MAX)
1164 *usp++ = (
unsigned short)*ulip++;
1168 for (ulip = (
unsigned long long *)src, uip = dest; count < len; count++)
1170 if (*ulip > X_UINT_MAX)
1172 *uip++ = (
unsigned int)*ulip++;
1176 for (ulip = (
unsigned long long *)src, ip = dest; count < len; count++)
1178 if (*ulip > X_INT_MAX)
1180 *ip++ = (int)*ulip++;
1184 for (ulip = (
unsigned long long *)src, lip = dest; count < len; count++)
1186 if (*ulip > X_INT64_MAX)
1188 *lip++ = (
long long)*ulip++;
1192 for (ulip = (
unsigned long long *)src, ulip1 = dest; count < len; count++)
1196 for (ulip = (
unsigned long long *)src, fp = dest; count < len; count++)
1197 *fp++ = (
float)*ulip++;
1200 for (ulip = (
unsigned long long *)src, dp = dest; count < len; count++)
1201 *dp++ = (
double)*ulip++;
1204 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
1205 __func__, src_type, dest_type));
1214 for (fp = (
float *)src, ubp = dest; count < len; count++)
1216 if (*fp > X_UCHAR_MAX || *fp < 0)
1218 *ubp++ = (
unsigned char)*fp++;
1222 for (fp = (
float *)src, bp = dest; count < len; count++)
1224 if (*fp > (
double)X_SCHAR_MAX || *fp < (
double)X_SCHAR_MIN)
1226 *bp++ = (
signed char)*fp++;
1230 for (fp = (
float *)src, sp = dest; count < len; count++)
1232 if (*fp > (
double)X_SHORT_MAX || *fp < (
double)X_SHORT_MIN)
1234 *sp++ = (short)*fp++;
1238 for (fp = (
float *)src, usp = dest; count < len; count++)
1240 if (*fp > X_USHORT_MAX || *fp < 0)
1242 *usp++ = (
unsigned short)*fp++;
1246 for (fp = (
float *)src, uip = dest; count < len; count++)
1248 if (*fp > (
float)X_UINT_MAX || *fp < 0)
1250 *uip++ = (
unsigned int)*fp++;
1254 for (fp = (
float *)src, ip = dest; count < len; count++)
1256 if (*fp > (
double)X_INT_MAX || *fp < (
double)X_INT_MIN)
1262 for (fp = (
float *)src, lip = dest; count < len; count++)
1264 if (*fp > (
float)X_INT64_MAX || *fp <X_INT64_MIN)
1266 *lip++ = (
long long)*fp++;
1270 for (fp = (
float *)src, ulip = dest; count < len; count++)
1272 if (*fp > (
float)X_UINT64_MAX || *fp < 0)
1274 *ulip++ = (
unsigned long long)*fp++;
1278 for (fp = (
float *)src, fp1 = dest; count < len; count++)
1282 for (fp = (
float *)src, dp = dest; count < len; count++)
1286 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
1287 __func__, src_type, dest_type));
1296 for (dp = (
double *)src, ubp = dest; count < len; count++)
1298 if (*dp > X_UCHAR_MAX || *dp < 0)
1300 *ubp++ = (
unsigned char)*dp++;
1304 for (dp = (
double *)src, bp = dest; count < len; count++)
1306 if (*dp > X_SCHAR_MAX || *dp < X_SCHAR_MIN)
1308 *bp++ = (
signed char)*dp++;
1312 for (dp = (
double *)src, sp = dest; count < len; count++)
1314 if (*dp > X_SHORT_MAX || *dp < X_SHORT_MIN)
1316 *sp++ = (short)*dp++;
1320 for (dp = (
double *)src, usp = dest; count < len; count++)
1322 if (*dp > X_USHORT_MAX || *dp < 0)
1324 *usp++ = (
unsigned short)*dp++;
1328 for (dp = (
double *)src, uip = dest; count < len; count++)
1330 if (*dp > X_UINT_MAX || *dp < 0)
1332 *uip++ = (
unsigned int)*dp++;
1336 for (dp = (
double *)src, ip = dest; count < len; count++)
1338 if (*dp > X_INT_MAX || *dp < X_INT_MIN)
1344 for (dp = (
double *)src, lip = dest; count < len; count++)
1346 if (*dp > (
double)X_INT64_MAX || *dp < X_INT64_MIN)
1348 *lip++ = (
long long)*dp++;
1352 for (dp = (
double *)src, ulip = dest; count < len; count++)
1354 if (*dp > (
double)X_UINT64_MAX || *dp < 0)
1356 *ulip++ = (
unsigned long long)*dp++;
1360 for (dp = (
double *)src, fp = dest; count < len; count++)
1362 if (isgreater(*dp, X_FLOAT_MAX) || isless(*dp, X_FLOAT_MIN))
1364 *fp++ = (float)*dp++;
1368 for (dp = (
double *)src, dp1 = dest; count < len; count++)
1372 LOG((0,
"%s: unexpected dest type. src_type %d, dest_type %d",
1373 __func__, src_type, dest_type));
1379 LOG((0,
"%s: unexpected src type. src_type %d, dest_type %d",
1380 __func__, src_type, dest_type));
1391 op1.fp = (
float *)dest;
1392 u32_ptr = op1.ui32p;
1393 for (idx = 0L; idx < len; idx += 2L)
1394 if (op1.fp[idx] != mss_val_cmp_flt)
1395 u32_ptr[idx] &= msk_f32_u32_zro;
1396 for (idx = 1L; idx < len; idx += 2L)
1397 if (op1.fp[idx] != mss_val_cmp_flt && u32_ptr[idx] != 0U)
1398 u32_ptr[idx] |= msk_f32_u32_one;
1403 op1.dp = (
double *)dest;
1404 u64_ptr = op1.ui64p;
1405 for (idx = 0L; idx < len; idx += 2L)
1406 if (op1.dp[idx] != mss_val_cmp_dbl)
1407 u64_ptr[idx] &= msk_f64_u64_zro;
1408 for (idx = 1L; idx < len; idx += 2L)
1409 if (op1.dp[idx] != mss_val_cmp_dbl && u64_ptr[idx] != 0ULL)
1410 u64_ptr[idx] |= msk_f64_u64_one;
1419 op1.fp = (
float *)dest;
1420 u32_ptr = op1.ui32p;
1421 for (idx = 0L; idx < len; idx++){
1422 if (op1.fp[idx] != mss_val_cmp_flt){
1423 u32_ptr[idx] += msk_f32_u32_hshv;
1424 u32_ptr[idx] &= msk_f32_u32_zro;
1431 op1.dp = (
double *)dest;
1432 u64_ptr = op1.ui64p;
1433 for (idx = 0L; idx < len; idx++){
1434 if (op1.dp[idx] != mss_val_cmp_dbl){
1435 u64_ptr[idx] += msk_f64_u64_hshv;
1436 u64_ptr[idx] &= msk_f64_u64_zro;
1447 op1.fp = (
float *)dest;
1448 u32_ptr = op1.ui32p;
1449 for (idx = 0L; idx < len; idx++)
1452 if((val = op1.fp[idx]) != mss_val_cmp_flt && u32_ptr[idx] != 0U)
1454 mnt = frexp(val, &xpn_bs2);
1455 mnt_fabs = fabs(mnt);
1456 mnt_log10_fabs = log10(mnt_fabs);
1458 dgt_nbr = (int)floor(xpn_bs2 * dgt_per_bit + mnt_log10_fabs) + 1;
1459 qnt_pwr = (int)floor(bit_per_dgt * (dgt_nbr - nsd));
1460 prc_bnr_xpl_rqr = mnt_fabs == 0.0 ? 0 : (
unsigned short)abs((
int)floor(xpn_bs2 - bit_per_dgt*mnt_log10_fabs) - qnt_pwr);
1464 msk_f32_u32_zro = 0U;
1465 msk_f32_u32_zro = ~msk_f32_u32_zro;
1467 msk_f32_u32_zro <<= bit_xpl_nbr_zro;
1469 msk_f32_u32_one = ~msk_f32_u32_zro;
1470 msk_f32_u32_hshv = msk_f32_u32_one & (msk_f32_u32_zro >> 1);
1471 u32_ptr[idx] += msk_f32_u32_hshv;
1472 u32_ptr[idx] &= msk_f32_u32_zro;
1481 op1.dp = (
double *)dest;
1482 u64_ptr = op1.ui64p;
1483 for (idx = 0L; idx < len; idx++)
1486 if((val = op1.dp[idx]) != mss_val_cmp_dbl && u64_ptr[idx] != 0ULL)
1488 mnt = frexp(val, &xpn_bs2);
1489 mnt_fabs = fabs(mnt);
1490 mnt_log10_fabs = log10(mnt_fabs);
1492 dgt_nbr = (int)floor(xpn_bs2 * dgt_per_bit + mnt_log10_fabs) + 1;
1493 qnt_pwr = (int)floor(bit_per_dgt * (dgt_nbr - nsd));
1494 prc_bnr_xpl_rqr = mnt_fabs == 0.0 ? 0 : (
unsigned short)abs((
int)floor(xpn_bs2 - bit_per_dgt*mnt_log10_fabs) - qnt_pwr);
1498 msk_f64_u64_zro = 0ULL;
1499 msk_f64_u64_zro = ~msk_f64_u64_zro;
1501 msk_f64_u64_zro <<= bit_xpl_nbr_zro;
1503 msk_f64_u64_one = ~msk_f64_u64_zro;
1504 msk_f64_u64_hshv = msk_f64_u64_one & (msk_f64_u64_zro >> 1);
1505 u64_ptr[idx] += msk_f64_u64_hshv;
1506 u64_ptr[idx] &= msk_f64_u64_zro;
1717 float num_values = 1, num_unlim = 0;
1719 size_t suggested_size;
1721 double total_chunk_size;
1724 if (var->type_info->nc_type_class ==
NC_STRING)
1725 type_size =
sizeof(
char *);
1727 type_size = var->type_info->size;
1732 total_chunk_size = (double) type_size;
1735 if(var->chunksizes == NULL) {
1736 if((var->chunksizes = calloc(1,
sizeof(
size_t)*var->ndims)) == NULL)
1742 for (d = 0; d < var->ndims; d++)
1744 assert(var->dim[d]);
1745 if (! var->dim[d]->unlimited)
1746 num_values *= (float)var->dim[d]->len;
1749 var->chunksizes[d] = 1;
1755 if (var->ndims == 1 && num_unlim == 1) {
1756 if (DEFAULT_CHUNK_SIZE / type_size <= 0)
1761 suggested_size = DEFAULT_CHUNK_SIZE / type_size;
1762 var->chunksizes[0] = suggested_size / type_size;
1763 LOG((4,
"%s: name %s dim %d DEFAULT_CHUNK_SIZE %d num_values %f type_size %d "
1764 "chunksize %ld", __func__, var->hdr.name, d, DEFAULT_CHUNK_SIZE, num_values, type_size, var->chunksizes[0]));
1766 if (var->ndims > 1 && (
float)var->ndims == num_unlim) {
1767 suggested_size = (size_t)pow((
double)DEFAULT_CHUNK_SIZE/(
double)type_size, 1.0/(
double)(var->ndims));
1768 for (d = 0; d < var->ndims; d++)
1770 var->chunksizes[d] = suggested_size ? suggested_size : 1;
1771 LOG((4,
"%s: name %s dim %d DEFAULT_CHUNK_SIZE %d num_values %f type_size %d "
1772 "chunksize %ld", __func__, var->hdr.name, d, DEFAULT_CHUNK_SIZE, num_values, type_size, var->chunksizes[d]));
1778 for (d = 0; d < var->ndims; d++)
1779 if (!var->chunksizes[d])
1781 suggested_size = (size_t)(pow((
double)DEFAULT_CHUNK_SIZE/(num_values * (
double)type_size),
1782 1.0/(
double)((
double)var->ndims - num_unlim)) * (
double)var->dim[d]->len - .5);
1783 if (suggested_size > var->dim[d]->len)
1784 suggested_size = var->dim[d]->len;
1785 var->chunksizes[d] = suggested_size ? suggested_size : 1;
1786 LOG((4,
"%s: name %s dim %d DEFAULT_CHUNK_SIZE %d num_values %f type_size %d "
1787 "chunksize %ld", __func__, var->hdr.name, d, DEFAULT_CHUNK_SIZE, num_values, type_size, var->chunksizes[d]));
1792 for (d = 0; d < var->ndims; d++)
1793 total_chunk_size *= (
double) var->chunksizes[d];
1794 LOG((4,
"total_chunk_size %f", total_chunk_size));
1807 for (d = 0; d < var->ndims; d++)
1808 var->chunksizes[d] = var->chunksizes[d]/2 ? var->chunksizes[d]/2 : 1;
1814 for (d = 0; d < var->ndims; d++)
1818 assert(var->chunksizes[d] > 0);
1819 num_chunks = (var->dim[d]->len + var->chunksizes[d] - 1) / var->chunksizes[d];
1820 if(num_chunks > 0) {
1821 overhang = (num_chunks * var->chunksizes[d]) - var->dim[d]->len;
1822 var->chunksizes[d] -= overhang / num_chunks;