Conformance matrix¶
Every case of the conformance corpus and what each consumer does with it: ✅ encodes to the golden bytes and decodes them back to the value (or only decodes them, or rejects them, as the case's direction says); a gap names why the consumer can't run the case yet and the item that fixes it, reader only that it decodes but can't encode, by design that it behaves otherwise on purpose. The tests fail when a mark is missing or the consumer passes a marked case.
| Consumer | Cases run | Gaps |
|---|---|---|
| derive | 195 of 195 | 0 |
| dynamic | 178 of 195 | 17 |
| explain | 178 of 195 | 17 |
| python | 178 of 195 | 17 |
| c | 34 of 195 | 161 |
| Case | Type | Direction | derive | dynamic | explain | python | c |
|---|---|---|---|---|---|---|---|
int.u8.zero |
u8 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.u8.max |
u8 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.u16.le |
u16 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.u32.le |
u32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.u64.max |
u64 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.u128.max |
u128 |
both | ✅ | ✅ | ✅ | ✅ | gap SW-66 |
int.i8.min |
i8 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.i16.negative |
i16 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.i32.negative |
i32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.i64.min |
i64 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
int.i128.min |
i128 |
both | ✅ | ✅ | ✅ | ✅ | gap SW-66 |
float.f32 |
f32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
float.f64 |
f64 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bool.true |
bool |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bool.false |
bool |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
unib32.one_nibble |
unib32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
unib32.two_nibbles |
unib32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
unib32.max |
unib32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
uvlq32.two_bytes |
uvlq32 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
uvlq64.max |
uvlq64 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bits.nibble |
nibble |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bits.u4 |
u4 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bits.u10 |
u10 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bits.u20 |
u20 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bits.i5 |
i5 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bits.i12 |
i12 |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
str.empty |
string |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
str.ascii |
string |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
str.utf8 |
string |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
str.array_string |
string |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bytes.empty |
bytes |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
bytes.three |
bytes |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
vec.u16 |
vec_u16 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
vec.array_vec |
vec_u16 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
vec.string |
vec_string |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
vec.bool |
vec_bool |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
vec.option |
vec_option |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
vec.vec |
vec_vec |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
max_len.str.at_bound |
max_len_str |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
max_len.str.over_bound |
max_len_str |
reject value | ✅ | ✅ | ✅ | ✅ | ✅ |
max_len.str.over_bound_bytes |
max_len_str |
reject | ✅ | ✅ | ✅ | ✅ | ✅ |
max_len.bytes |
max_len_bytes |
both | ✅ | ✅ | ✅ | ✅ | ✅ |
option.none |
option_u8 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
option.some |
option_u8 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
option.str |
option_str |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
option.option.some_some |
option_option |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
option.option.some_none |
option_option |
both | ✅ | gap TOOL-13 | gap TOOL-13 | gap TOOL-13 | gap API-26 |
result.ok |
result |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
result.err |
result |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
array.u16 |
array_u16 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
array.bool |
array_bool |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
tuple |
tuple |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
range |
range |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
range_inclusive |
range_inclusive |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.bits |
bits |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.nested |
nested |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.flags.relocated |
flagged |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.flags.relocated_other |
flagged |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.tuple |
pair |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.tuple.none |
pair |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.tuple.plain |
rgb |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.unit |
marker |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.sized |
sized |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.final_structure |
final_struct |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.generic |
generic |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.phantom |
phantom |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.validate.ok |
validated |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.validate.rejected |
validated |
reject | ✅ | gap SW-20 | gap SW-20 | gap SW-20 | gap API-26 |
struct.tail_size |
Framed |
both | ✅ | gap INT-9 | gap INT-9 | gap INT-9 | gap API-26 |
struct.generic_const |
generic_const |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.sparse.empty |
sparse |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.sparse.slots |
sparse |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.recursive.list |
tree |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
struct.recursive.box |
expr |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.unit |
shape |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.tuple |
shape |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.struct |
shape |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.explicit_discriminant |
shape |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.unknown_variant |
shape |
decode | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.appended_variant |
shape_v2 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.sub_byte.seven |
address |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.sub_byte.ten |
address |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.sized |
command |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.sized.wide_discriminant |
command |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.u2 |
error |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.nibble.unit |
nib_enum |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.nibble.payload |
nib_enum |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.cfg.kept |
cfg_subset |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.cfg.kept_after_gap |
cfg_subset |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
enum.cfg.compiled_out |
cfg_subset |
reject | ✅ | by design (DER-8) | by design (DER-8) | by design (DER-8) | gap API-26 |
evolution.v1 |
config_v1 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
evolution.v2 |
config_v2 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
evolution.new_reads_old |
config_v2 |
decode | ✅ | gap INT-10 | gap INT-10 | gap INT-10 | gap API-26 |
evolution.old_reads_new |
config_v1 |
decode | ✅ | ✅ | ✅ | ✅ | gap API-26 |
fixed.numbers |
fixed_numbers |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
fixed.bits |
fixed_bits |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
fixed.nested |
fixed_nested |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
fixed.option.none |
fixed_maybe |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
fixed.option.some |
fixed_maybe |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
fixed.enum.unit |
fixed_op |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
fixed.enum.fields |
fixed_op |
both | ✅ | ✅ | ✅ | ✅ | reader only (API-26) |
series.u16 |
series_u16 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
series.struct |
series_sample |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.u64 |
count |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.unib32 |
index |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.fields.plain |
plain_fields |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.fields |
wrapped_fields |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.sized.plain |
plain_sized |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.sized |
wrapped_sized |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.vec.unib32.plain |
vec_unib32 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.vec.unib32 |
vec_index |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.vec.nibble.plain |
vec_nibble |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.vec.nibble |
vec_digit |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.option.plain |
option_u64 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.option |
option_count |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.array.plain |
array_nibble |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.array |
array_digit |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.series.plain |
series_u64 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.series |
series_count |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.series.struct.plain |
series_plain |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
transparent.series.struct |
series_wrapped |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
wire.struct |
wired |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
wire.struct.out_of_range |
wired |
reject value | ✅ | ✅ | ✅ | ✅ | gap API-26 |
wire.enum.tuple |
wired_op |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
wire.enum.named |
wired_op |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
wire.series |
series_wired |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
cfg_attr.v1 |
gated_v1 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
cfg_attr.v2 |
gated_v2 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
cfg_attr.new_reads_old |
gated_v2 |
decode | ✅ | gap INT-10 | gap INT-10 | gap INT-10 | gap API-26 |
head_tail.struct |
HtRecord |
both | ✅ | gap SW-46 | gap SW-46 | gap SW-46 | reader only (API-26) |
link_setup.without_meta |
LinkSetup |
both | ✅ | gap - | gap - | gap - | gap - |
link_setup.with_meta |
LinkSetup |
both | ✅ | gap - | gap - | gap - | gap - |
disconnect_reason.hub_handover |
DisconnectReason |
both | ✅ | gap - | gap - | gap - | gap - |
disconnect_reason.from_newer |
DisconnectReason |
both | ✅ | gap - | gap - | gap - | gap - |
tail_bytes |
WithTail |
both | ✅ | gap INT-9 | gap INT-9 | gap INT-9 | gap API-26 |
stdlib.timebase.steer_point |
steer_point |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.timebase.steer_point.steerer |
steer_point |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.timebase.sync_status |
sync_status |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.timebase.sync_status.steerers |
sync_status |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.dim.volt |
dim |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.dim.rad_bit |
dim |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.dim.counted |
dim |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.dim.rejected |
dim |
reject | ✅ | gap SW-20 | gap SW-20 | gap SW-20 | gap API-26 |
stdlib.si.dim.root |
dim |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.dim.root.rejected |
dim |
reject | ✅ | gap SW-20 | gap SW-20 | gap SW-20 | gap API-26 |
stdlib.si.fixed.pow10 |
fixed_pow10 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.fixed.duty16 |
duty16 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.fixed.bounded |
fixed_bounded |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.fixed.bounded.rejected |
fixed_bounded |
reject | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.fixed.customary |
fixed_customary |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.milli |
quantity_volt |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.kibi |
quantity_byte |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.pow10 |
quantity_second |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.pow2 |
quantity_second |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.fullscale |
quantity_ratio |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.unknown_scale |
quantity_ratio |
decode | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.bounded |
quantity_rail |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.quantity.bounded.rejected |
quantity_rail |
reject | ✅ | gap CLT-54 | gap CLT-54 | gap CLT-54 | gap API-26 |
stdlib.si.magnitude.one |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.milli |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.kibi |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.duty16 |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.degree |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.sqrt2 |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.decibel_in_neper |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.pound |
magnitude |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.magnitude.rejected |
magnitude |
reject | ✅ | gap SW-20 | gap SW-20 | gap SW-20 | gap API-26 |
stdlib.si.point.celsius |
point_celsius |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.point.bounded |
point_bounded |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.point.bounded.rejected |
point_bounded |
reject | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.index.in_struct |
with_index |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.index_from_1 |
index_from_1 |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.index_from_1.zero.rejected |
index_from_1 |
reject | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.index_from_1.bounded.rejected |
index_from_1 |
reject | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.seq.nibble_wrap |
seq_pair |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.offset.zero |
offset |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.offset.celsius |
offset |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.offset.minus_forty |
offset |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.offset.fahrenheit |
offset |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.offset.rejected |
offset |
reject | ✅ | gap SW-20 | gap SW-20 | gap SW-20 | gap API-26 |
stdlib.si.si_expr.volt |
si_expr |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.si_expr.pound_force |
si_expr |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.si_expr.sqrt |
si_expr |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
stdlib.si.si_expr.rejected |
si_expr |
reject | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.unit |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.unit_conventional |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.unit_kind |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.scale |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.per |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.product |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.quotient |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.origin |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.marker_def.angle |
marker_def |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.item_struct_extra.transparent |
item_struct_extra |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
model.item_struct_extra.marker |
item_struct_extra |
both | ✅ | ✅ | ✅ | ✅ | gap API-26 |
Requantize¶
A stored number converted to another scale and storage with a named rounding and overflow policy (STD-63, Rounding and overflow): every consumer gives the result, none for no value.
| Case | Conversion | Value | Rounding | Overflow | Result | derive | dynamic | python | c |
|---|---|---|---|---|---|---|---|---|---|
requantize.milli_to_deci.tie.truncate |
mV i16 -> dV i8 | 1250 | truncate | checked | 12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.tie.floor |
mV i16 -> dV i8 | 1250 | floor | checked | 12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.tie.ceil |
mV i16 -> dV i8 | 1250 | ceil | checked | 13 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.tie.nearest_even |
mV i16 -> dV i8 | 1250 | nearest_even | checked | 12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.tie.nearest_away |
mV i16 -> dV i8 | 1250 | nearest_away | checked | 13 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.negative_tie.truncate |
mV i16 -> dV i8 | -1250 | truncate | checked | -12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.negative_tie.floor |
mV i16 -> dV i8 | -1250 | floor | checked | -13 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.negative_tie.ceil |
mV i16 -> dV i8 | -1250 | ceil | checked | -12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.negative_tie.nearest_even |
mV i16 -> dV i8 | -1250 | nearest_even | checked | -12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.negative_tie.nearest_away |
mV i16 -> dV i8 | -1250 | nearest_away | checked | -13 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.tie_up_to_even |
mV i16 -> dV i8 | 1350 | nearest_even | checked | 14 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.below_tie |
mV i16 -> dV i8 | 1249 | nearest_even | checked | 12 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.overflow.checked |
mV i16 -> dV i8 | 20000 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.overflow.saturate |
mV i16 -> dV i8 | 20000 | nearest_even | saturate | 127 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.overflow.wrap |
mV i16 -> dV i8 | 20000 | nearest_even | wrap | -56 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_deci.underflow.saturate |
mV i16 -> dV i8 | -20000 | nearest_even | saturate | -128 | ✅ | ✅ | ✅ | ✅ |
requantize.micro_to_milli_unsigned.negative.checked |
uV i32 -> mV u8 | -1500 | floor | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.micro_to_milli_unsigned.negative.saturate |
uV i32 -> mV u8 | -1500 | floor | saturate | 0 | ✅ | ✅ | ✅ | ✅ |
requantize.micro_to_milli_unsigned.negative.wrap |
uV i32 -> mV u8 | -1500 | floor | wrap | 254 | ✅ | ✅ | ✅ | ✅ |
requantize.micro_to_milli_unsigned.top |
uV i32 -> mV u8 | 255499 | nearest_even | checked | 255 | ✅ | ✅ | ✅ | ✅ |
requantize.micro_to_milli_unsigned.tie_past_top.checked |
uV i32 -> mV u8 | 255500 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.micro_to_milli_unsigned.tie_past_top.saturate |
uV i32 -> mV u8 | 255500 | nearest_even | saturate | 255 | ✅ | ✅ | ✅ | ✅ |
requantize.q15_to_q7.tie_past_top.checked |
Q15 -> Q7 | 16448 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.q15_to_q7.tie_past_top.saturate |
Q15 -> Q7 | 16448 | nearest_even | saturate | 127 | ✅ | ✅ | ✅ | ✅ |
requantize.q15_to_q7.tie.nearest_even |
Q15 -> Q7 | 16192 | nearest_even | checked | 126 | ✅ | ✅ | ✅ | ✅ |
requantize.q15_to_q7.tie.nearest_away |
Q15 -> Q7 | 16192 | nearest_away | checked | 127 | ✅ | ✅ | ✅ | ✅ |
requantize.q15_to_q7.negative_end |
Q15 -> Q7 | -16448 | nearest_even | checked | -128 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.truncate |
7/3 i16 -> i16 | 100 | truncate | checked | 233 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.ceil |
7/3 i16 -> i16 | 100 | ceil | checked | 234 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.nearest_even |
7/3 i16 -> i16 | 100 | nearest_even | checked | 233 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.negative.floor |
7/3 i16 -> i16 | -100 | floor | checked | -234 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.negative.truncate |
7/3 i16 -> i16 | -100 | truncate | checked | -233 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.exact_top |
7/3 i16 -> i16 | 14043 | truncate | checked | 32767 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.past_top.checked |
7/3 i16 -> i16 | 14044 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.past_top.saturate |
7/3 i16 -> i16 | 14044 | nearest_even | saturate | 32767 | ✅ | ✅ | ✅ | ✅ |
requantize.seven_thirds.past_top.wrap |
7/3 i16 -> i16 | 14044 | nearest_even | wrap | -32767 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_micro.fits |
mV u16 -> uV u16 | 65 | truncate | checked | 65000 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_micro.overflow.checked |
mV u16 -> uV u16 | 70 | truncate | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_micro.overflow.saturate |
mV u16 -> uV u16 | 70 | truncate | saturate | 65535 | ✅ | ✅ | ✅ | ✅ |
requantize.milli_to_micro.overflow.wrap |
mV u16 -> uV u16 | 70 | truncate | wrap | 4464 | ✅ | ✅ | ✅ | ✅ |
requantize.bam16_to_bam8.truncate |
BAM16 -> BAM8 | 65408 | truncate | checked | 255 | ✅ | ✅ | ✅ | ✅ |
requantize.bam16_to_bam8.full_turn.checked |
BAM16 -> BAM8 | 65408 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.bam16_to_bam8.full_turn.saturate |
BAM16 -> BAM8 | 65408 | nearest_even | saturate | 255 | ✅ | ✅ | ✅ | ✅ |
requantize.bam16_to_bam8.full_turn.wrap |
BAM16 -> BAM8 | 65408 | nearest_even | wrap | 0 | ✅ | ✅ | ✅ | ✅ |
requantize.bam16_to_bam8.tie |
BAM16 -> BAM8 | 16512 | nearest_even | checked | 64 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.tie.nearest_even |
f32 -> i16 | 2.5 | nearest_even | checked | 2 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.tie.nearest_away |
f32 -> i16 | 2.5 | nearest_away | checked | 3 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.negative_tie.nearest_even |
f32 -> i16 | -2.5 | nearest_even | checked | -2 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.negative.floor |
f32 -> i16 | -2.5 | floor | checked | -3 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.tie_past_top.checked |
f32 -> i16 | 32767.5 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.tie_past_top.saturate |
f32 -> i16 | 32767.5 | nearest_even | saturate | 32767 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.huge.saturate |
f32 -> i16 | 10000000000.0 | truncate | saturate | 32767 | ✅ | ✅ | ✅ | ✅ |
requantize.float_to_int.huge.wrap |
f32 -> i16 | -10000000000.0 | truncate | wrap | 7168 | ✅ | ✅ | ✅ | ✅ |
requantize.int_to_float.milli |
mV i32 -> V f64 | 1250 | nearest_even | checked | 1.25 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.45000.truncate |
m° i32 -> urad i32 | 45000 | truncate | checked | 785398 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.45000.floor |
m° i32 -> urad i32 | 45000 | floor | checked | 785398 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.45000.ceil |
m° i32 -> urad i32 | 45000 | ceil | checked | 785399 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.45000.nearest_even |
m° i32 -> urad i32 | 45000 | nearest_even | checked | 785398 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.90000.truncate |
m° i32 -> urad i32 | 90000 | truncate | checked | 1570796 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.90000.floor |
m° i32 -> urad i32 | 90000 | floor | checked | 1570796 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.90000.ceil |
m° i32 -> urad i32 | 90000 | ceil | checked | 1570797 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.90000.nearest_even |
m° i32 -> urad i32 | 90000 | nearest_even | checked | 1570796 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.1.truncate |
m° i32 -> urad i32 | 1 | truncate | checked | 17 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.1.floor |
m° i32 -> urad i32 | 1 | floor | checked | 17 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.1.ceil |
m° i32 -> urad i32 | 1 | ceil | checked | 18 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.1.nearest_even |
m° i32 -> urad i32 | 1 | nearest_even | checked | 17 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.negative.floor |
m° i32 -> urad i32 | -45000 | floor | checked | -785399 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian.negative.truncate |
m° i32 -> urad i32 | -45000 | truncate | checked | -785398 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian_i64.big |
m° i64 -> urad i64 | 900000000000000 | nearest_even | checked | 15707963267948966 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian_i64.past_top.checked |
m° i64 -> urad i64 | 2000000000000000000 | nearest_even | checked | none | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian_i64.past_top.saturate |
m° i64 -> urad i64 | 2000000000000000000 | nearest_even | saturate | 9223372036854775807 | ✅ | ✅ | ✅ | ✅ |
requantize.degree_to_radian_i64.past_bottom.saturate |
m° i64 -> urad i64 | -2000000000000000000 | floor | saturate | -9223372036854775808 | ✅ | ✅ | ✅ | ✅ |
Gaps¶
- c: no generated C for this type yet: C from the ww_self model (API-26). 147 cases:
vec.u16,vec.array_vec,vec.string,vec.bool,vec.option,vec.vec,option.none,option.some,option.str,option.option.some_some,option.option.some_none,result.ok,result.err,array.u16,array.bool,tuple,range,range_inclusive,struct.bits,struct.nested,struct.flags.relocated,struct.flags.relocated_other,struct.tuple,struct.tuple.none,struct.tuple.plain,struct.unit,struct.sized,struct.final_structure,struct.generic,struct.phantom,struct.validate.ok,struct.validate.rejected,struct.tail_size,struct.generic_const,struct.sparse.empty,struct.sparse.slots,struct.recursive.list,struct.recursive.box,enum.unit,enum.tuple,enum.struct,enum.explicit_discriminant,enum.unknown_variant,enum.appended_variant,enum.sub_byte.seven,enum.sub_byte.ten,enum.sized,enum.sized.wide_discriminant,enum.u2,enum.nibble.unit,enum.nibble.payload,enum.cfg.kept,enum.cfg.kept_after_gap,enum.cfg.compiled_out,evolution.v1,evolution.v2,evolution.new_reads_old,evolution.old_reads_new,series.u16,series.struct,transparent.u64,transparent.unib32,transparent.fields.plain,transparent.fields,transparent.sized.plain,transparent.sized,transparent.vec.unib32.plain,transparent.vec.unib32,transparent.vec.nibble.plain,transparent.vec.nibble,transparent.option.plain,transparent.option,transparent.array.plain,transparent.array,transparent.series.plain,transparent.series,transparent.series.struct.plain,transparent.series.struct,wire.struct,wire.struct.out_of_range,wire.enum.tuple,wire.enum.named,wire.series,cfg_attr.v1,cfg_attr.v2,cfg_attr.new_reads_old,tail_bytes,stdlib.timebase.steer_point,stdlib.timebase.steer_point.steerer,stdlib.timebase.sync_status,stdlib.timebase.sync_status.steerers,stdlib.si.dim.volt,stdlib.si.dim.rad_bit,stdlib.si.dim.counted,stdlib.si.dim.rejected,stdlib.si.dim.root,stdlib.si.dim.root.rejected,stdlib.si.fixed.pow10,stdlib.si.fixed.duty16,stdlib.si.fixed.bounded,stdlib.si.fixed.bounded.rejected,stdlib.si.fixed.customary,stdlib.si.quantity.milli,stdlib.si.quantity.kibi,stdlib.si.quantity.pow10,stdlib.si.quantity.pow2,stdlib.si.quantity.fullscale,stdlib.si.quantity.unknown_scale,stdlib.si.quantity.bounded,stdlib.si.quantity.bounded.rejected,stdlib.si.magnitude.one,stdlib.si.magnitude.milli,stdlib.si.magnitude.kibi,stdlib.si.magnitude.duty16,stdlib.si.magnitude.degree,stdlib.si.magnitude.sqrt2,stdlib.si.magnitude.decibel_in_neper,stdlib.si.magnitude.pound,stdlib.si.magnitude.rejected,stdlib.si.point.celsius,stdlib.si.point.bounded,stdlib.si.point.bounded.rejected,stdlib.si.index.in_struct,stdlib.si.index_from_1,stdlib.si.index_from_1.zero.rejected,stdlib.si.index_from_1.bounded.rejected,stdlib.si.seq.nibble_wrap,stdlib.si.offset.zero,stdlib.si.offset.celsius,stdlib.si.offset.minus_forty,stdlib.si.offset.fahrenheit,stdlib.si.offset.rejected,stdlib.si.si_expr.volt,stdlib.si.si_expr.pound_force,stdlib.si.si_expr.sqrt,stdlib.si.si_expr.rejected,model.marker_def.unit,model.marker_def.unit_conventional,model.marker_def.unit_kind,model.marker_def.scale,model.marker_def.per,model.marker_def.product,model.marker_def.quotient,model.marker_def.origin,model.marker_def.angle,model.item_struct_extra.transparent,model.item_struct_extra.marker. - c: reader only: the generated C has no writer yet (API-26). 8 cases:
fixed.numbers,fixed.bits,fixed.nested,fixed.option.none,fixed.option.some,fixed.enum.unit,fixed.enum.fields,head_tail.struct. - c: the C runtime has no 128-bit numbers (SW-66). 2 cases:
int.u128.max,int.i128.min. - c: ww_link's Disconnect payload, not a type of an API in the model. 2 cases:
disconnect_reason.hub_handover,disconnect_reason.from_newer. - c: ww_link's LinkSetup is a link message, not a type of an API in the model. 2 cases:
link_setup.without_meta,link_setup.with_meta. - dynamic: TailBytes has no form in the API model yet (INT-9). 1 case:
tail_bytes. - dynamic: TailSize has no form in the API model yet (INT-9). 1 case:
struct.tail_size. - dynamic: a validate function is Rust code the API model can't carry; checks in the model come with sub-type numbers (SW-20). 5 cases:
struct.validate.rejected,stdlib.si.dim.rejected,stdlib.si.dim.root.rejected,stdlib.si.magnitude.rejected,stdlib.si.offset.rejected. - dynamic: bounds are ww_si markers in the type arguments, checked by ww_si-aware clients (CLT-54). 1 case:
stdlib.si.quantity.bounded.rejected. - dynamic: by design: the API model has the variants of every build, a host reads it (DER-8). 1 case:
enum.cfg.compiled_out. - dynamic: head_tail is a wire format of its own without ShrinkWrap serdes, not an API type (SW-46). 1 case:
head_tail.struct. - dynamic: null is None and Some(None) alike in the corpus value form, as in Python (TOOL-13). 1 case:
option.option.some_none. - dynamic: the API model has no #[default] values, an old field reads as its type's default (INT-10). 2 cases:
evolution.new_reads_old,cfg_attr.new_reads_old. - dynamic: ww_link's Disconnect payload, not a type of an API in the model; a dynamic consumer reads API types (SW-46 is the same for head_tail). 2 cases:
disconnect_reason.hub_handover,disconnect_reason.from_newer. - dynamic: ww_link's LinkSetup is a link message, not a type of an API in the model; a dynamic consumer reads API types (SW-46 is the same for head_tail). 2 cases:
link_setup.without_meta,link_setup.with_meta. - explain: TailBytes has no form in the API model yet (INT-9). 1 case:
tail_bytes. - explain: TailSize has no form in the API model yet (INT-9). 1 case:
struct.tail_size. - explain: a validate function is Rust code the API model can't carry; checks in the model come with sub-type numbers (SW-20). 5 cases:
struct.validate.rejected,stdlib.si.dim.rejected,stdlib.si.dim.root.rejected,stdlib.si.magnitude.rejected,stdlib.si.offset.rejected. - explain: bounds are ww_si markers in the type arguments, checked by ww_si-aware clients (CLT-54). 1 case:
stdlib.si.quantity.bounded.rejected. - explain: by design: the API model has the variants of every build, a host reads it (DER-8). 1 case:
enum.cfg.compiled_out. - explain: head_tail is a wire format of its own without ShrinkWrap serdes, not an API type (SW-46). 1 case:
head_tail.struct. - explain: null is None and Some(None) alike in the corpus value form, as in Python (TOOL-13). 1 case:
option.option.some_none. - explain: the API model has no #[default] values, an old field reads as its type's default (INT-10). 2 cases:
evolution.new_reads_old,cfg_attr.new_reads_old. - explain: ww_link's Disconnect payload, not a type of an API in the model. 2 cases:
disconnect_reason.hub_handover,disconnect_reason.from_newer. - explain: ww_link's LinkSetup is a link message, not a type of an API in the model. 2 cases:
link_setup.without_meta,link_setup.with_meta. - python: TailBytes has no form in the API model yet (INT-9). 1 case:
tail_bytes. - python: TailSize has no form in the API model yet (INT-9). 1 case:
struct.tail_size. - python: a validate function is Rust code the API model can't carry; checks in the model come with sub-type numbers (SW-20). 5 cases:
struct.validate.rejected,stdlib.si.dim.rejected,stdlib.si.dim.root.rejected,stdlib.si.magnitude.rejected,stdlib.si.offset.rejected. - python: bounds are ww_si markers in the type arguments, checked by ww_si-aware clients (CLT-54). 1 case:
stdlib.si.quantity.bounded.rejected. - python: by design: the API model has the variants of every build (DER-8). 1 case:
enum.cfg.compiled_out. - python: head_tail is a wire format of its own without ShrinkWrap serdes, not an API type (SW-46). 1 case:
head_tail.struct. - python: null is None and Some(None) alike in the Python value form (TOOL-13). 1 case:
option.option.some_none. - python: the API model has no #[default] values (INT-10). 2 cases:
evolution.new_reads_old,cfg_attr.new_reads_old. - python: ww_link's Disconnect payload, not a type of an API in the model. 2 cases:
disconnect_reason.hub_handover,disconnect_reason.from_newer. - python: ww_link's LinkSetup is a link message, not a type of an API in the model. 2 cases:
link_setup.without_meta,link_setup.with_meta.