[INFO] fetching crate vita-core 0.4.0...
[INFO] testing vita-core-0.4.0 against 1.100.0-beta.1 for beta-1.100-2
[INFO] extracting crate vita-core 0.4.0 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate vita-core 0.4.0
[INFO] finished tweaking crates.io crate vita-core 0.4.0
[INFO] tweaked toml for crates.io crate vita-core 0.4.0 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate vita-core 0.4.0 on toolchain 1.100.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate vita-core 0.4.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.100.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c
[INFO] running `Command { std: "docker" "start" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling vita-core v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.33s
[INFO] running `Command { std: "docker" "inspect" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling vita-core v0.4.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.00s
[INFO] running `Command { std: "docker" "inspect" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c" "/opt/rustwide/cargo-home/bin/cargo" "+1.100.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.01s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/build/vita-core/424fc922458d0563/out/vita_core-424fc922458d0563)
[INFO] [stdout] 
[INFO] [stdout] running 697 tests
[INFO] [stdout] test geometry::measure::dihedral::tests::a_collinear_leading_triple_leaves_the_dihedral_absent ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_syn_planar_chain_has_a_dihedral_of_zero ... ok
[INFO] [stdout] test geometry::measure::angle::tests::an_angle_is_symmetric_in_its_arms ... ok
[INFO] [stdout] test geometry::measure::displacement::tests::a_displacement_from_a_site_to_itself_is_zero ... ok
[INFO] [stdout] test geometry::measure::angle::tests::an_arm_of_no_length_leaves_the_angle_absent ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::an_anti_planar_chain_has_a_dihedral_of_a_half_turn ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_dihedral_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_dihedral_reverses_sign_when_the_far_arm_turns_the_other_way ... ok
[INFO] [stdout] test geometry::measure::angle::tests::an_angle_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_collinear_trailing_triple_leaves_the_dihedral_absent ... ok
[INFO] [stdout] test geometry::measure::distance::tests::a_distance_is_symmetric ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_quarter_turn_of_the_far_arm_measures_a_quarter_turn ... ok
[INFO] [stdout] test geometry::measure::angle::tests::an_angle_between_arms_along_one_ray_is_zero ... ok
[INFO] [stdout] test geometry::measure::signed_volume::tests::a_signed_volume_is_unchanged_by_translation ... ok
[INFO] [stdout] test geometry::measure::signed_volume::tests::a_unit_corner_spans_a_sixth_of_the_unit_cube ... ok
[INFO] [stdout] test geometry::measure::displacement::tests::a_displacement_negates_when_its_endpoints_are_exchanged ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_dihedral_is_unchanged_when_its_chain_is_reversed ... ok
[INFO] [stdout] test geometry::measure::signed_volume::tests::coplanar_sites_span_no_volume ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_center_of_mass_leans_toward_the_heavier_site ... ok
[INFO] [stdout] test geometry::measure::distance::tests::a_distance_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::measure::distance::tests::a_distance_is_the_norm_of_the_separation ... ok
[INFO] [stdout] test geometry::measure::angle::tests::perpendicular_arms_make_a_quarter_turn ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_center_of_mass_of_equal_masses_is_the_centroid ... ok
[INFO] [stdout] test geometry::measure::displacement::tests::a_displacement_runs_from_the_first_site_to_the_second ... ok
[INFO] [stdout] test geometry::measure::displacement::tests::a_displacement_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::measure::angle::tests::an_angle_across_a_straight_chain_is_a_half_turn ... ok
[INFO] [stdout] test geometry::measure::dihedral::tests::a_dihedral_is_unchanged_when_its_chain_is_scaled ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_center_of_mass_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::measure::signed_volume::tests::exchanging_two_sites_reverses_the_sign ... ok
[INFO] [stdout] test geometry::moment::moments::tests::a_diagonal_matrix_keeps_its_diagonal_as_its_eigenvalues ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_centroid_of_an_empty_system_is_absent ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_centroid_of_one_site_is_that_site ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_center_of_mass_of_weightless_sites_is_absent ... ok
[INFO] [stdout] test geometry::measure::distance::tests::the_distance_between_coincident_sites_is_zero ... ok
[INFO] [stdout] test geometry::measure::signed_volume::tests::a_cyclic_exchange_of_the_last_three_sites_preserves_the_volume ... ok
[INFO] [stdout] test geometry::measure::signed_volume::tests::a_signed_volume_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::moment::moments::tests::an_indefinite_matrix_decomposes_alike ... ok
[INFO] [stdout] test geometry::moment::moments::tests::collinear_sites_leave_two_principal_moments_at_zero ... ok
[INFO] [stdout] test geometry::moment::moments::tests::coplanar_sites_leave_the_narrowest_axis_along_the_plane_normal ... ok
[INFO] [stdout] test geometry::moment::moments::tests::mass_moments_center_on_the_center_of_mass ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_centroid_agrees_with_the_center_the_moments_carry ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_centroid_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::moment::center::tests::the_centroid_is_the_mean_of_the_positions ... ok
[INFO] [stdout] test geometry::moment::moments::tests::moments_center_on_the_mean_of_the_positions ... ok
[INFO] [stdout] test geometry::moment::moments::tests::repeated_eigenvalues_leave_the_eigenvectors_orthonormal ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_center_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_covariance_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_covariance_is_symmetric ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_covariance_of_one_site_vanishes ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_eigenvectors_form_a_right_handed_frame ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_principal_axes_follow_the_directions_of_greatest_spread ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_principal_moments_are_independent_of_the_order_of_the_sites ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_principal_moments_ascend ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_mass_moments_of_weightless_sites_are_absent ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_radius_of_gyration_is_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_moments_of_an_empty_system_are_absent ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_moments_of_one_site_center_on_it ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_displacement_is_read_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_principal_axes_turn_with_a_tilted_distribution ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_negative_cutoff_puts_nothing_within_reach_across_the_lattice ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_cutoff_of_zero_leaves_only_what_coincides ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_pair_carries_the_displacement_from_the_lesser_site_to_the_greater ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_point_before_the_corner_finds_what_lies_near_it ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_eigenvalues_ascend ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_principal_moments_are_given_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_point_is_near_the_sites_across_the_boundary ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_cutoff_of_zero_leaves_only_what_coincides_across_the_lattice ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_decomposition_reconstructs_the_matrix ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_radius_of_gyration_is_the_root_of_the_covariance_trace ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_eigenvectors_are_orthonormal ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_negative_cutoff_puts_nothing_within_reach ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::an_axis_too_short_to_divide_pairs_across_itself_once ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_pair_two_images_bring_together_is_counted_once ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::an_empty_system_arranges_nothing ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_point_out_of_reach_of_every_site_has_nothing_near ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_point_outside_the_cell_is_read_from_its_image_inside_it ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_position_outside_the_cell_is_read_from_its_image_inside_it ... ok
[INFO] [stdout] test geometry::moment::moments::tests::the_covariance_measures_the_spread_about_the_center ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_lone_site_has_no_pair ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_pair_two_images_bring_together_is_measured_by_the_nearer ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_site_standing_at_the_point_is_near_it ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::every_pair_gives_the_lesser_site_first ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::near_carries_the_displacement_from_the_point ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::a_sheared_cell_is_divided_by_its_perpendicular_widths ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::near_reads_the_point_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::an_empty_system_has_no_neighbors ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::near_finds_what_a_full_scan_would ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::near_lists_the_sites_within_the_cutoff_of_a_point ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::pairs_are_independent_of_the_order_of_the_positions ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::the_arrangement_finds_what_a_full_sweep_would ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::contains_is_symmetric ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::sites_exactly_at_the_cutoff_are_paired ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::a_site_is_not_its_own_neighbor ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::sites_in_diagonally_adjacent_cells_are_paired ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::contains_answers_whether_a_pair_is_within_reach ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::an_absent_site_reaches_nothing ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::a_site_out_of_reach_of_the_rest_reaches_nothing ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::every_displacement_is_the_shortest_image_of_its_pair ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::pairs_are_the_sites_within_the_cutoff ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::neighbors_are_independent_of_the_order_the_sites_arrive_in ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::every_pair_is_reached_from_both_of_its_sites ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::the_cutoff_is_read_back_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::iter_lists_every_pair_once ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::the_wrapped_arrangement_finds_what_a_full_sweep_would ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::of_site_lists_the_sites_within_reach ... ok
[INFO] [stdout] test primitive::element::tests::a_named_element_reports_its_iupac_name ... ok
[INFO] [stdout] test primitive::element::tests::a_named_element_reports_its_iupac_symbol ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::the_cutoff_is_taken_in_the_requested_unit ... ok
[INFO] [stdout] test geometry::proximity::arrangement::tests::the_oblique_arrangement_finds_what_a_full_sweep_would ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::the_pairs_are_counted_once_each ... ok
[INFO] [stdout] test primitive::element::tests::a_systematic_element_concatenates_its_digit_roots ... ok
[INFO] [stdout] test primitive::element::tests::from_nonzero_preserves_the_atomic_number ... ok
[INFO] [stdout] test primitive::element::tests::display_is_the_symbol ... ok
[INFO] [stdout] test primitive::element::tests::elements_beyond_the_named_range_have_no_period ... ok
[INFO] [stdout] test primitive::element::tests::new_rejects_zero ... ok
[INFO] [stdout] test primitive::element::tests::atomic_number_returns_the_proton_count ... ok
[INFO] [stdout] test primitive::element::tests::period_maps_each_periodic_table_row ... ok
[INFO] [stdout] test primitive::element::tests::systematic_name_drops_the_trailing_i_of_a_final_bi ... ok
[INFO] [stdout] test primitive::element::tests::systematic_name_drops_the_trailing_i_of_a_final_tri ... ok
[INFO] [stdout] test primitive::element::tests::from_symbol_finds_a_named_element ... ok
[INFO] [stdout] test primitive::element::tests::from_symbol_rejects_the_wrong_length ... ok
[INFO] [stdout] test primitive::element::tests::from_symbol_rejects_unknown_symbols ... ok
[INFO] [stdout] test primitive::element::tests::one_is_the_smallest_element ... ok
[INFO] [stdout] test primitive::element::tests::option_is_the_same_size_as_the_raw_integer ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::the_relation_holds_exactly_the_pairs_the_arrangement_yields ... ok
[INFO] [stdout] test primitive::id::tests::from_nonzero_preserves_the_value ... ok
[INFO] [stdout] test primitive::id::tests::get_returns_the_value_passed_to_new ... ok
[INFO] [stdout] test primitive::element::tests::the_last_named_element_has_period_seven ... ok
[INFO] [stdout] test primitive::element::tests::from_symbol_is_case_sensitive ... ok
[INFO] [stdout] test primitive::element::tests::from_symbol_inverts_symbol_for_every_element ... ok
[INFO] [stdout] test primitive::element::tests::the_first_element_past_the_named_range_is_systematic ... ok
[INFO] [stdout] test primitive::element::tests::systematic_name_elides_a_doubled_n_between_enn_and_nil ... ok
[INFO] [stdout] test primitive::element::tests::the_largest_atomic_number_is_valid ... ok
[INFO] [stdout] test primitive::element::tests::the_largest_element_is_named_systematically ... ok
[INFO] [stdout] test primitive::id::tests::display_shows_the_integer_value ... ok
[INFO] [stdout] test primitive::element::tests::from_symbol_finds_a_systematic_element ... ok
[INFO] [stdout] test primitive::id::tests::ids_compare_equal_when_their_values_match ... ok
[INFO] [stdout] test primitive::id::tests::ids_order_by_their_integer_value ... ok
[INFO] [stdout] test primitive::id::tests::new_with_zero_is_none ... ok
[INFO] [stdout] test primitive::id::tests::new_accepts_the_maximum_value ... ok
[INFO] [stdout] test primitive::id::tests::new_with_one_is_some ... ok
[INFO] [stdout] test primitive::element::tests::elements_are_equal_when_their_atomic_numbers_match ... ok
[INFO] [stdout] test primitive::element::tests::elements_order_by_atomic_number ... ok
[INFO] [stdout] test primitive::id::tests::option_is_the_same_size_as_the_raw_integer ... ok
[INFO] [stdout] test primitive::isotope::tests::atomic_number_returns_the_proton_count ... ok
[INFO] [stdout] test primitive::isotope::tests::displays_as_symbol_and_mass_number ... ok
[INFO] [stdout] test primitive::isotope::tests::element_returns_the_underlying_element ... ok
[INFO] [stdout] test primitive::isotope::tests::from_neutron_count_builds_the_mass_number ... ok
[INFO] [stdout] test primitive::isotope::tests::from_neutron_count_rejects_an_overflowing_mass_number ... ok
[INFO] [stdout] test primitive::isotope::tests::isotopes_are_equal_exactly_when_element_and_mass_number_match ... ok
[INFO] [stdout] test primitive::isotope::tests::isotopes_order_by_element_then_mass_number ... ok
[INFO] [stdout] test primitive::isotope::tests::new_rejects_a_mass_number_below_the_atomic_number ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_folds_a_displacement_into_the_first_brillouin_zone ... ok
[INFO] [stdout] test primitive::isotope::tests::mass_number_returns_the_nucleon_count ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_rejects_coplanar_vectors ... ok
[INFO] [stdout] test primitive::isotope::tests::the_largest_non_overflowing_neutron_count_is_valid ... ok
[INFO] [stdout] test primitive::isotope::tests::neutron_count_is_mass_number_minus_atomic_number ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_rejects_a_nonpositive_edge ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_recovers_its_basis_vectors ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_recovers_miller_indices_from_a_wavevector ... ok
[INFO] [stdout] test primitive::lattice::tests::cubic_rejects_a_nonfinite_side ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_rejects_a_cell_too_large_to_resolve ... ok
[INFO] [stdout] test primitive::lattice::tests::a_cubic_reciprocal_lattice_has_equal_edge_lengths ... ok
[INFO] [stdout] test primitive::lattice::tests::from_parameters_rejects_a_nonpositive_edge ... ok
[INFO] [stdout] test primitive::lattice::tests::from_parameters_reproduces_a_cubic_cell ... ok
[INFO] [stdout] test primitive::isotope::tests::mass_number_equal_to_the_atomic_number_has_zero_neutrons ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_wraps_a_wavevector_into_its_cell ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_yields_the_origin_and_its_six_nearest_neighbors ... ok
[INFO] [stdout] test primitive::lattice::tests::an_orthorhombic_reciprocal_lattice_matches_its_edge_lengths ... ok
[INFO] [stdout] test primitive::lattice::tests::cubic_basis_vectors_are_axis_aligned ... ok
[INFO] [stdout] test primitive::lattice::tests::cubic_has_equal_edge_lengths ... ok
[INFO] [stdout] test primitive::lattice::tests::from_parameters_rejects_an_unrealizable_cell ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_reduces_to_its_successive_minima ... ok
[INFO] [stdout] test primitive::lattice::tests::cubic_rejects_a_zero_side ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_maps_miller_indices_to_a_wavevector ... ok
[INFO] [stdout] test primitive::lattice::tests::a_reciprocal_lattice_from_parameters_reproduces_a_cubic_cell ... ok
[INFO] [stdout] test geometry::proximity::neighbors::tests::the_wrapped_relation_holds_exactly_the_pairs_a_full_sweep_would ... ok
[INFO] [stdout] test primitive::lattice::tests::from_vectors_recovers_its_basis_vectors ... ok
[INFO] [stdout] test primitive::lattice::tests::from_parameters_roundtrips_edge_lengths_and_angles ... ok
[INFO] [stdout] test primitive::lattice::tests::minimum_image_differs_from_its_argument_by_a_lattice_vector ... ok
[INFO] [stdout] test primitive::lattice::tests::cubic_volume_is_the_side_cubed ... ok
[INFO] [stdout] test primitive::lattice::tests::cubic_is_orthogonal ... ok
[INFO] [stdout] test primitive::lattice::tests::minimum_image_shortens_a_displacement_longer_than_half_the_cell ... ok
[INFO] [stdout] test primitive::lattice::tests::minimum_image_is_exact_for_a_strongly_skewed_cell ... ok
[INFO] [stdout] test primitive::lattice::tests::orthorhombic_edge_lengths_match_its_arguments ... ok
[INFO] [stdout] test primitive::lattice::tests::orthorhombic_rejects_a_nonpositive_edge ... ok
[INFO] [stdout] test primitive::lattice::tests::orthorhombic_volume_is_the_product_of_edges ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_angles_of_an_orthogonal_cell_are_right ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_edge_lengths_invert_the_perpendicular_widths ... ok
[INFO] [stdout] test primitive::lattice::tests::minimum_image_leaves_a_short_displacement_unchanged ... ok
[INFO] [stdout] test primitive::lattice::tests::minimum_image_is_independent_of_the_presenting_basis ... ok
[INFO] [stdout] test primitive::lattice::tests::lattice_vectors_convert_to_the_requested_unit ... ok
[INFO] [stdout] test primitive::lattice::tests::from_vectors_rejects_coplanar_vectors ... ok
[INFO] [stdout] test primitive::lattice::tests::from_vectors_rejects_a_cell_too_thin_to_resolve ... ok
[INFO] [stdout] test primitive::lattice::tests::from_vectors_rejects_a_cell_too_large_to_resolve ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_of_the_reciprocal_recovers_the_lattice ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_of_a_cubic_lattice_inverts_its_edge_length ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_vectors_are_dual_to_the_basis_vectors ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_vectors_convert_to_the_requested_unit ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_volume_converts_to_the_requested_unit ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_volume_is_the_inverse_of_the_cell_volume ... ok
[INFO] [stdout] test primitive::lattice::tests::reduced_edge_lengths_are_the_successive_minima ... ok
[INFO] [stdout] test primitive::lattice::tests::the_operations_are_generic_over_f32 ... ok
[INFO] [stdout] test primitive::lattice::tests::to_cartesian_maps_fractional_coordinates_to_positions ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_are_closed_under_negation ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_exclude_vectors_beyond_the_radius ... ok
[INFO] [stdout] test primitive::lattice::tests::reduced_shortens_a_skewed_basis ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_yield_nothing_for_a_nonfinite_radius ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_yield_nothing_for_a_negative_radius ... ok
[INFO] [stdout] test primitive::lattice::tests::wrap_differs_from_its_argument_by_a_lattice_vector ... ok
[INFO] [stdout] test primitive::lattice::tests::reduced_spans_the_same_lattice ... ok
[INFO] [stdout] test primitive::lattice::tests::to_fractional_inverts_to_cartesian ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_are_independent_of_the_presenting_basis ... ok
[INFO] [stdout] test primitive::lattice::tests::wrap_leaves_a_position_inside_the_cell_unchanged ... ok
[INFO] [stdout] test primitive::number::tests::a_double_on_the_left_scales_a_quantity ... ok
[INFO] [stdout] test primitive::lattice::tests::wrap_keeps_the_fractional_coordinates_below_one ... ok
[INFO] [stdout] test primitive::lattice::tests::wrap_folds_a_position_outside_the_cell_into_it ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_yield_the_origin_alone_at_zero_radius ... ok
[INFO] [stdout] test primitive::number::tests::a_not_a_number_quantity_stays_not_a_number_in_every_unit ... ok
[INFO] [stdout] test primitive::lattice::tests::reduced_is_idempotent ... ok
[INFO] [stdout] test primitive::lattice::tests::volume_is_the_absolute_value_of_the_determinant ... ok
[INFO] [stdout] test primitive::lattice::tests::wrap_is_idempotent ... ok
[INFO] [stdout] test primitive::number::tests::a_quantity_is_recovered_from_its_own_value ... ok
[INFO] [stdout] test primitive::lattice::tests::translations_yield_the_origin_and_its_six_nearest_neighbors ... ok
[INFO] [stdout] test primitive::lattice::tests::reduced_leaves_an_already_reduced_lattice_unchanged ... ok
[INFO] [stdout] test primitive::lattice::tests::reduced_begins_with_the_shortest_lattice_vector ... ok
[INFO] [stdout] test primitive::number::tests::acosh_is_the_inverse_of_the_hyperbolic_cosine ... ok
[INFO] [stdout] test primitive::number::tests::asin_of_one_is_a_quarter_turn ... ok
[INFO] [stdout] test primitive::number::tests::asin_outside_the_unit_interval_is_not_a_number ... ok
[INFO] [stdout] test primitive::number::tests::asinh_is_the_inverse_of_the_hyperbolic_sine ... ok
[INFO] [stdout] test primitive::number::tests::atan2_resolves_the_quadrant_from_both_coordinates ... ok
[INFO] [stdout] test primitive::number::tests::a_scalar_is_its_own_value ... ok
[INFO] [stdout] test primitive::number::tests::acos_outside_the_unit_interval_is_not_a_number ... ok
[INFO] [stdout] test primitive::lattice::tests::wrap_of_a_nonfinite_position_is_not_finite ... ok
[INFO] [stdout] test primitive::number::tests::clamp_leaves_a_quantity_inside_the_interval_unchanged ... ok
[INFO] [stdout] test primitive::number::tests::a_single_on_the_left_scales_a_quantity ... ok
[INFO] [stdout] test primitive::number::tests::copysign_gives_a_scalar_the_sign_of_its_argument ... ok
[INFO] [stdout] test primitive::number::tests::clamp_lowers_a_quantity_above_the_interval_to_its_upper_bound ... ok
[INFO] [stdout] test primitive::number::tests::atan_of_one_is_an_eighth_turn ... ok
[INFO] [stdout] test primitive::number::tests::atanh_is_the_inverse_of_the_hyperbolic_tangent ... ok
[INFO] [stdout] test primitive::number::tests::abs_of_a_negative_quantity_is_its_magnitude ... ok
[INFO] [stdout] test primitive::number::tests::exp_m1_subtracts_one_from_the_exponential ... ok
[INFO] [stdout] test primitive::number::tests::exp_raises_e_to_a_scalar ... ok
[INFO] [stdout] test primitive::number::tests::cbrt_of_a_cube_is_its_root ... ok
[INFO] [stdout] test primitive::number::tests::ceil_rounds_a_quantity_toward_positive_infinity ... ok
[INFO] [stdout] test primitive::number::tests::acos_of_zero_is_a_quarter_turn ... ok
[INFO] [stdout] test primitive::number::tests::clamp_confines_a_scalar_to_the_interval ... ok
[INFO] [stdout] test primitive::number::tests::cos_of_a_half_turn_is_minus_one ... ok
[INFO] [stdout] test primitive::number::tests::clamp_raises_a_quantity_below_the_interval_to_its_lower_bound ... ok
[INFO] [stdout] test primitive::number::tests::copysign_keeps_the_magnitude_and_takes_the_sign_of_its_argument ... ok
[INFO] [stdout] test primitive::number::tests::floor_rounds_a_quantity_toward_negative_infinity ... ok
[INFO] [stdout] test primitive::number::tests::from_f64_and_to_f64_round_trip_a_double ... ok
[INFO] [stdout] test primitive::number::tests::flooring_a_quantity_depends_on_the_unit_it_is_read_in ... ok
[INFO] [stdout] test primitive::number::tests::hypot_of_two_quantities_is_the_hypotenuse_they_span ... ok
[INFO] [stdout] test primitive::number::tests::half_of_the_smallest_positive_scalar_is_subnormal ... ok
[INFO] [stdout] test primitive::number::tests::infinity_exceeds_every_finite_quantity ... ok
[INFO] [stdout] test primitive::number::tests::hypot_is_symmetric_in_its_arguments ... ok
[INFO] [stdout] test primitive::number::tests::is_finite_does_not_hold_for_an_infinite_quantity ... ok
[INFO] [stdout] test primitive::number::tests::fract_keeps_only_the_fractional_part ... ok
[INFO] [stdout] test primitive::number::tests::from_f64_beyond_the_scalar_range_is_infinite ... ok
[INFO] [stdout] test primitive::number::tests::is_nan_holds_for_a_not_a_number_quantity ... ok
[INFO] [stdout] test primitive::number::tests::from_f64_narrows_a_double_to_the_scalar_type ... ok
[INFO] [stdout] test primitive::number::tests::is_normal_does_not_hold_for_a_quantity_below_full_precision ... ok
[INFO] [stdout] test primitive::number::tests::cosh_is_half_the_sum_of_the_exponentials ... ok
[INFO] [stdout] test primitive::number::tests::is_sign_negative_holds_for_a_negative_quantity ... ok
[INFO] [stdout] test primitive::number::tests::div_euclid_of_two_quantities_is_their_dimensionless_quotient ... ok
[INFO] [stdout] test primitive::number::tests::div_euclid_of_two_scalars_is_their_euclidean_quotient ... ok
[INFO] [stdout] test primitive::number::tests::exp2_raises_two_to_a_scalar ... ok
[INFO] [stdout] test primitive::number::tests::is_sign_positive_holds_for_a_positive_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_subnormal_holds_for_a_quantity_below_full_precision ... ok
[INFO] [stdout] test primitive::number::tests::is_subnormal_does_not_hold_for_an_ordinary_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_finite_holds_for_an_ordinary_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_infinite_does_not_hold_for_an_ordinary_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_normal_holds_for_an_ordinary_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_infinite_holds_for_an_infinite_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_sign_negative_does_not_hold_for_a_positive_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_nan_does_not_hold_for_an_ordinary_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_sign_negative_holds_for_a_negative_zero_quantity ... ok
[INFO] [stdout] test primitive::number::tests::is_sign_positive_does_not_hold_for_a_negative_quantity ... ok
[INFO] [stdout] test primitive::number::tests::ln_1p_adds_one_before_taking_the_logarithm ... ok
[INFO] [stdout] test primitive::lattice::tests::minimum_image_agrees_with_an_exhaustive_search ... ok
[INFO] [stdout] test primitive::number::tests::ln_of_a_negative_scalar_is_not_a_number ... ok
[INFO] [stdout] test primitive::number::tests::ln_of_zero_is_negative_infinity ... ok
[INFO] [stdout] test primitive::number::tests::log2_takes_the_base_two_logarithm ... ok
[INFO] [stdout] test primitive::number::tests::ln_of_e_is_one ... ok
[INFO] [stdout] test primitive::number::tests::log10_takes_the_base_ten_logarithm ... ok
[INFO] [stdout] test primitive::number::tests::midpoint_of_two_quantities_lies_halfway_between_them ... ok
[INFO] [stdout] test primitive::number::tests::max_returns_the_larger_of_two_quantities ... ok
[INFO] [stdout] test primitive::number::tests::mul_add_scales_a_quantity_by_a_number_then_adds_a_quantity ... ok
[INFO] [stdout] test primitive::number::tests::one_leaves_a_scalar_unchanged_under_multiplication ... ok
[INFO] [stdout] test primitive::number::tests::negative_infinity_falls_below_every_finite_quantity ... ok
[INFO] [stdout] test primitive::number::tests::one_plus_epsilon_differs_from_one ... ok
[INFO] [stdout] test primitive::number::tests::one_plus_half_of_epsilon_is_one ... ok
[INFO] [stdout] test primitive::number::tests::rem_euclid_of_a_negative_dividend_is_nonnegative ... ok
[INFO] [stdout] test primitive::number::tests::max_ignores_a_not_a_number_argument ... ok
[INFO] [stdout] test primitive::number::tests::min_ignores_a_not_a_number_argument ... ok
[INFO] [stdout] test primitive::number::tests::powf_raises_a_scalar_to_a_fractional_power ... ok
[INFO] [stdout] test primitive::number::tests::round_sends_a_half_away_from_zero ... ok
[INFO] [stdout] test primitive::number::tests::round_ties_even_sends_a_half_to_the_even_integer ... ok
[INFO] [stdout] test primitive::number::tests::rem_euclid_of_a_negative_scalar_is_nonnegative ... ok
[INFO] [stdout] test primitive::number::tests::signum_of_a_negative_zero_quantity_is_minus_one ... ok
[INFO] [stdout] test primitive::number::tests::powi_raises_a_scalar_to_an_integer_power ... ok
[INFO] [stdout] test primitive::number::tests::min_returns_the_smaller_of_two_quantities ... ok
[INFO] [stdout] test primitive::number::tests::mul_add_scales_a_scalar_then_adds ... ok
[INFO] [stdout] test primitive::number::tests::sinh_is_half_the_difference_of_the_exponentials ... ok
[INFO] [stdout] test primitive::number::tests::signum_of_a_positive_quantity_is_one ... ok
[INFO] [stdout] test primitive::number::tests::sin_cos_returns_the_sine_and_the_cosine_together ... ok
[INFO] [stdout] test primitive::number::tests::infinity_is_the_same_quantity_in_every_unit ... ok
[INFO] [stdout] test primitive::number::tests::negative_infinity_is_the_same_quantity_in_every_unit ... ok
[INFO] [stdout] test primitive::number::tests::log_takes_the_logarithm_in_the_given_base ... ok
[INFO] [stdout] test primitive::number::tests::the_largest_scalar_is_finite ... ok
[INFO] [stdout] test primitive::number::tests::sin_of_a_quarter_turn_is_one ... ok
[INFO] [stdout] test primitive::number::tests::tanh_is_the_hyperbolic_sine_over_the_hyperbolic_cosine ... ok
[INFO] [stdout] test primitive::number::tests::the_not_a_number_quantity_is_not_a_number ... ok
[INFO] [stdout] test primitive::number::tests::the_smallest_positive_scalar_is_normal ... ok
[INFO] [stdout] test primitive::number::tests::trunc_drops_the_fractional_part_toward_zero ... ok
[INFO] [stdout] test primitive::number::tests::signum_of_a_negative_quantity_is_minus_one ... ok
[INFO] [stdout] test primitive::number::tests::the_smallest_scalar_is_the_negation_of_the_largest ... ok
[INFO] [stdout] test primitive::number::tests::to_f64_widens_a_scalar_to_a_double ... ok
[INFO] [stdout] test primitive::number::tests::twice_the_largest_scalar_is_infinite ... ok
[INFO] [stdout] test tensor::matrix::tests::a_double_on_the_left_scales_every_element ... ok
[INFO] [stdout] test primitive::number::tests::zero_is_the_same_quantity_in_every_unit ... ok
[INFO] [stdout] test tensor::matrix::tests::a_double_on_the_left_scales_a_length_matrix ... ok
[INFO] [stdout] test primitive::number::tests::to_radians_is_the_inverse_of_to_degrees ... ok
[INFO] [stdout] test primitive::number::tests::tan_of_an_eighth_turn_is_one ... ok
[INFO] [stdout] test primitive::number::tests::to_degrees_turns_a_half_turn_into_a_hundred_and_eighty ... ok
[INFO] [stdout] test tensor::matrix::tests::a_length_matrix_maps_a_dimensionless_vector_to_a_length_vector ... ok
[INFO] [stdout] test primitive::number::tests::recip_is_its_own_inverse ... ok
[INFO] [stdout] test tensor::matrix::tests::a_single_on_the_left_scales_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::a_matrix_times_its_inverse_is_the_identity ... ok
[INFO] [stdout] test primitive::number::tests::recip_of_a_scalar_is_one_divided_by_it ... ok
[INFO] [stdout] test primitive::number::tests::sqrt_of_a_negative_scalar_is_not_a_number ... ok
[INFO] [stdout] test primitive::number::tests::zero_leaves_a_quantity_unchanged_under_addition ... ok
[INFO] [stdout] test tensor::matrix::tests::abs_takes_the_magnitude_of_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::add_assign_sums_the_elements_in_place ... ok
[INFO] [stdout] test tensor::matrix::tests::ceil_leaves_an_integer_element_unchanged ... ok
[INFO] [stdout] test tensor::matrix::tests::clamp_lowers_an_element_above_the_interval_to_the_upper_bound ... ok
[INFO] [stdout] test tensor::matrix::tests::clamp_agrees_with_taking_the_maximum_then_the_minimum ... ok
[INFO] [stdout] test tensor::matrix::tests::copysign_keeps_the_magnitudes_and_takes_the_signs_of_its_argument ... ok
[INFO] [stdout] test tensor::matrix::tests::addition_sums_the_elements ... ok
[INFO] [stdout] test tensor::matrix::tests::array_roundtrip_preserves_the_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::default_is_the_zero_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::determinant_is_the_signed_volume_of_the_columns ... ok
[INFO] [stdout] test tensor::matrix::tests::determinant_of_the_zero_matrix_is_zero ... ok
[INFO] [stdout] test tensor::matrix::tests::diagonal_roundtrip_preserves_the_diagonal ... ok
[INFO] [stdout] test tensor::matrix::tests::diagonal_yields_the_main_diagonal ... ok
[INFO] [stdout] test tensor::matrix::tests::div_assign_scales_every_element_down_in_place ... ok
[INFO] [stdout] test tensor::matrix::tests::clamp_leaves_an_element_inside_the_interval_unchanged ... ok
[INFO] [stdout] test tensor::matrix::tests::div_euclid_is_the_euclidean_quotient_of_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::col_yields_the_column_at_that_index ... ok
[INFO] [stdout] test tensor::matrix::tests::clamp_raises_an_element_below_the_interval_to_the_lower_bound ... ok
[INFO] [stdout] test tensor::matrix::tests::debug_labels_the_three_columns ... ok
[INFO] [stdout] test tensor::matrix::tests::div_euclid_of_length_matrices_is_dimensionless ... ok
[INFO] [stdout] test tensor::matrix::tests::dividing_a_length_matrix_by_a_length_leaves_it_dimensionless ... ok
[INFO] [stdout] test tensor::matrix::tests::dividing_by_a_number_scales_every_element_down ... ok
[INFO] [stdout] test tensor::matrix::tests::fract_keeps_the_fractional_part_of_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::fract_of_an_integer_element_is_zero ... ok
[INFO] [stdout] test primitive::number::tests::the_value_of_a_quantity_is_its_number_in_its_own_unit ... ok
[INFO] [stdout] test tensor::matrix::tests::from_axis_angle_about_an_axis_matches_the_axis_rotation ... ok
[INFO] [stdout] test tensor::matrix::tests::from_axis_angle_with_zero_angle_is_the_identity ... ok
[INFO] [stdout] test tensor::matrix::tests::from_cols_array_reads_the_elements_in_column_major_order ... ok
[INFO] [stdout] test tensor::matrix::tests::from_cols_takes_the_three_columns_in_order ... ok
[INFO] [stdout] test tensor::matrix::tests::from_diagonal_places_the_vector_on_the_diagonal ... ok
[INFO] [stdout] test tensor::matrix::tests::from_rotation_x_turns_the_y_axis_toward_the_z_axis ... ok
[INFO] [stdout] test tensor::matrix::tests::from_rotation_x_with_zero_angle_is_the_identity ... ok
[INFO] [stdout] test tensor::matrix::tests::ceil_rounds_every_element_toward_positive_infinity ... ok
[INFO] [stdout] test tensor::matrix::tests::from_rotation_y_turns_the_z_axis_toward_the_x_axis ... ok
[INFO] [stdout] test tensor::matrix::tests::floor_leaves_an_integer_element_unchanged ... ok
[INFO] [stdout] test tensor::matrix::tests::hypot_of_length_matrices_stays_a_length ... ok
[INFO] [stdout] test tensor::matrix::tests::a_dimensionless_matrix_maps_a_length_vector_to_a_length_vector ... ok
[INFO] [stdout] test primitive::number::tests::sqrt_of_a_square_is_its_root ... ok
[INFO] [stdout] test tensor::matrix::tests::is_finite_does_not_hold_when_an_element_is_infinite ... ok
[INFO] [stdout] test tensor::matrix::tests::is_finite_holds_when_every_element_is_finite ... ok
[INFO] [stdout] test tensor::matrix::tests::from_rows_is_the_transpose_of_from_cols ... ok
[INFO] [stdout] test tensor::matrix::tests::from_rows_takes_the_three_rows_in_order ... ok
[INFO] [stdout] test tensor::matrix::tests::hypot_combines_the_elements_pairwise ... ok
[INFO] [stdout] test tensor::matrix::tests::inverse_of_a_diagonal_matrix_inverts_each_element ... ok
[INFO] [stdout] test tensor::matrix::tests::is_infinite_does_not_hold_when_every_element_is_finite ... ok
[INFO] [stdout] test tensor::matrix::tests::floor_rounds_every_element_toward_negative_infinity ... ok
[INFO] [stdout] test tensor::matrix::tests::is_infinite_holds_when_an_element_is_infinite ... ok
[INFO] [stdout] test tensor::matrix::tests::is_nan_does_not_hold_when_no_element_is_not_a_number ... ok
[INFO] [stdout] test tensor::matrix::tests::lerp_at_one_yields_the_ending_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::lerp_at_zero_yields_the_starting_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::from_rotation_z_turns_the_x_axis_toward_the_y_axis ... ok
[INFO] [stdout] test tensor::matrix::tests::lerp_beyond_one_extrapolates_past_the_ending_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::lerp_holds_when_the_difference_between_the_ends_overflows ... ok
[INFO] [stdout] test tensor::matrix::tests::lerp_interpolates_between_the_matrices ... ok
[INFO] [stdout] test tensor::matrix::tests::is_invertible_holds_for_a_nonsingular_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::is_subnormal_holds_when_an_element_is_subnormal ... ok
[INFO] [stdout] test tensor::matrix::tests::lerp_of_length_matrices_takes_a_dimensionless_factor ... ok
[INFO] [stdout] test tensor::matrix::tests::max_ignores_a_not_a_number_element ... ok
[INFO] [stdout] test tensor::matrix::tests::max_of_a_matrix_with_itself_is_that_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::map_applies_the_function_to_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::max_takes_the_larger_of_each_pair_of_elements ... ok
[INFO] [stdout] test tensor::matrix::tests::matrices_are_equal_exactly_when_all_columns_match ... ok
[INFO] [stdout] test tensor::matrix::tests::midpoint_agrees_with_interpolating_halfway ... ok
[INFO] [stdout] test tensor::matrix::tests::midpoint_is_halfway_between_the_matrices ... ok
[INFO] [stdout] test tensor::matrix::tests::min_element_is_the_smallest_element ... ok
[INFO] [stdout] test tensor::matrix::tests::min_takes_the_smaller_of_each_pair_of_elements ... ok
[INFO] [stdout] test tensor::matrix::tests::min_ignores_a_not_a_number_element ... ok
[INFO] [stdout] test tensor::matrix::tests::mul_add_of_length_matrices_takes_a_dimensionless_factor ... ok
[INFO] [stdout] test tensor::matrix::tests::is_normal_does_not_hold_when_an_element_is_zero ... ok
[INFO] [stdout] test tensor::matrix::tests::max_element_is_the_largest_element ... ok
[INFO] [stdout] test tensor::matrix::tests::mul_add_scales_then_offsets_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::is_normal_holds_when_every_element_is_normal ... ok
[INFO] [stdout] test tensor::matrix::tests::min_of_a_matrix_with_itself_is_that_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::mul_assign_by_a_dimensionless_matrix_keeps_the_length ... ok
[INFO] [stdout] test tensor::matrix::tests::is_subnormal_does_not_hold_when_every_element_is_normal ... ok
[INFO] [stdout] test tensor::matrix::tests::is_invertible_does_not_hold_for_a_singular_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::is_nan_holds_when_an_element_is_not_a_number ... ok
[INFO] [stdout] test tensor::matrix::tests::mul_assign_by_a_matrix_composes_in_place ... ok
[INFO] [stdout] test tensor::matrix::tests::mul_assign_scales_every_element_in_place ... ok
[INFO] [stdout] test tensor::matrix::tests::multiplying_a_dimensionless_matrix_by_a_length_carries_the_dimension ... ok
[INFO] [stdout] test tensor::matrix::tests::multiplying_by_a_vector_combines_the_columns ... ok
[INFO] [stdout] test tensor::matrix::tests::negation_flips_the_sign_of_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::rem_euclid_is_nonnegative_for_a_negative_element ... ok
[INFO] [stdout] test tensor::matrix::tests::rotating_twice_about_an_axis_adds_the_angles ... ok
[INFO] [stdout] test tensor::matrix::tests::scaling_on_either_side_gives_the_same_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::multiplying_a_length_matrix_by_a_dimensionless_matrix_keeps_the_length ... ok
[INFO] [stdout] test tensor::matrix::tests::multiplying_a_dimensionless_matrix_by_a_length_matrix_keeps_the_length ... ok
[INFO] [stdout] test tensor::matrix::tests::multiplying_by_a_matrix_composes_the_maps ... ok
[INFO] [stdout] test tensor::matrix::tests::round_sends_a_half_away_from_zero ... ok
[INFO] [stdout] test tensor::matrix::tests::round_ties_even_sends_a_half_to_the_even_integer ... ok
[INFO] [stdout] test tensor::matrix::tests::signum_takes_the_sign_of_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::subtraction_differences_the_elements ... ok
[INFO] [stdout] test tensor::matrix::tests::summing_no_matrices_yields_the_zero_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::summing_owned_matrices_adds_them ... ok
[INFO] [stdout] test tensor::matrix::tests::the_determinant_is_multiplicative ... ok
[INFO] [stdout] test tensor::matrix::tests::the_identity_is_one_on_the_diagonal_and_zero_elsewhere ... ok
[INFO] [stdout] test tensor::matrix::tests::multiplying_by_a_number_scales_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::outer_product_multiplies_every_pair_of_components ... ok
[INFO] [stdout] test tensor::matrix::tests::sub_assign_differences_the_elements_in_place ... ok
[INFO] [stdout] test tensor::matrix::tests::summing_borrowed_matrices_adds_them ... ok
[INFO] [stdout] test tensor::matrix::tests::row_yields_the_row_at_that_index ... ok
[INFO] [stdout] test tensor::matrix::tests::signum_of_a_length_matrix_is_dimensionless ... ok
[INFO] [stdout] test tensor::matrix::tests::signum_of_a_negative_zero_element_is_minus_one ... ok
[INFO] [stdout] test tensor::matrix::tests::the_identity_maps_a_vector_to_itself ... ok
[INFO] [stdout] test tensor::matrix::tests::the_identity_is_the_multiplicative_identity ... ok
[INFO] [stdout] test tensor::matrix::tests::to_cols_array_writes_the_elements_in_column_major_order ... ok
[INFO] [stdout] test tensor::matrix::tests::the_trace_of_an_outer_product_is_the_dot_product ... ok
[INFO] [stdout] test tensor::matrix::tests::the_determinant_is_unchanged_by_transposition ... ok
[INFO] [stdout] test tensor::matrix::tests::trace_of_the_zero_matrix_is_zero ... ok
[INFO] [stdout] test tensor::matrix::tests::transpose_is_its_own_inverse ... ok
[INFO] [stdout] test tensor::matrix::tests::trunc_drops_the_fractional_part_of_every_element ... ok
[INFO] [stdout] test tensor::matrix::tests::transpose_exchanges_rows_and_columns ... ok
[INFO] [stdout] test tensor::matrix::tests::try_inverse_of_a_singular_matrix_is_none ... ok
[INFO] [stdout] test tensor::matrix::tests::try_inverse_of_the_zero_matrix_is_none ... ok
[INFO] [stdout] test tensor::matrix::tests::trace_adds_the_diagonal_elements ... ok
[INFO] [stdout] test tensor::point::tests::abs_takes_the_magnitude_of_every_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::ceil_leaves_an_integer_coordinate_unchanged ... ok
[INFO] [stdout] test tensor::point::tests::ceil_rounds_every_coordinate_toward_positive_infinity ... ok
[INFO] [stdout] test tensor::matrix::tests::the_zero_matrix_has_zero_elements ... ok
[INFO] [stdout] test tensor::matrix::tests::truncating_and_the_fractional_part_reconstruct_the_matrix ... ok
[INFO] [stdout] test tensor::matrix::tests::try_inverse_of_a_nonsingular_matrix_is_some ... ok
[INFO] [stdout] test tensor::point::tests::adding_a_vector_translates_the_point ... ok
[INFO] [stdout] test tensor::point::tests::add_assign_translates_the_point_in_place ... ok
[INFO] [stdout] test tensor::point::tests::centroid_of_no_points_is_the_origin ... ok
[INFO] [stdout] test tensor::point::tests::centroid_of_one_point_is_that_point ... ok
[INFO] [stdout] test tensor::point::tests::centroid_holds_when_the_sum_of_the_points_overflows ... ok
[INFO] [stdout] test tensor::point::tests::centroid_is_independent_of_the_order_of_the_points ... ok
[INFO] [stdout] test tensor::point::tests::centroid_is_the_arithmetic_mean_of_the_points ... ok
[INFO] [stdout] test tensor::point::tests::clamp_leaves_a_coordinate_inside_the_interval_unchanged ... ok
[INFO] [stdout] test tensor::point::tests::clamp_lowers_a_coordinate_above_the_interval_to_the_upper_bound ... ok
[INFO] [stdout] test tensor::point::tests::clamp_agrees_with_taking_the_maximum_then_the_minimum ... ok
[INFO] [stdout] test tensor::point::tests::clamp_raises_a_coordinate_below_the_interval_to_the_lower_bound ... ok
[INFO] [stdout] test tensor::point::tests::copysign_keeps_the_magnitudes_and_takes_the_signs_of_its_argument ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_of_a_cell_too_small_to_invert_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::default_is_the_origin ... ok
[INFO] [stdout] test tensor::point::tests::distance_from_a_point_to_itself_is_zero ... ok
[INFO] [stdout] test tensor::point::tests::distance_holds_above_the_squared_range ... ok
[INFO] [stdout] test tensor::point::tests::distance_is_symmetric ... ok
[INFO] [stdout] test tensor::point::tests::distance_is_the_euclidean_distance_between_the_points ... ok
[INFO] [stdout] test tensor::matrix::tests::zip_map_combines_the_two_matrices_element_wise ... ok
[INFO] [stdout] test tensor::point::tests::array_roundtrip_preserves_the_point ... ok
[INFO] [stdout] test tensor::point::tests::distance_squared_is_the_square_of_the_distance ... ok
[INFO] [stdout] test tensor::point::tests::distance_squared_is_the_squared_euclidean_distance ... ok
[INFO] [stdout] test primitive::lattice::tests::reciprocal_of_a_reciprocal_cell_too_small_to_invert_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::div_euclid_of_length_points_is_dimensionless ... ok
[INFO] [stdout] test tensor::point::tests::fract_of_an_integer_coordinate_is_zero ... ok
[INFO] [stdout] test tensor::point::tests::distance_squared_from_a_point_to_itself_is_zero ... ok
[INFO] [stdout] test tensor::point::tests::floor_leaves_an_integer_coordinate_unchanged ... ok
[INFO] [stdout] test tensor::point::tests::fract_keeps_the_fractional_part_of_every_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::floor_rounds_every_coordinate_toward_negative_infinity ... ok
[INFO] [stdout] test tensor::point::tests::from_array_takes_coordinates_in_order ... ok
[INFO] [stdout] test primitive::number::tests::clamp_with_an_inverted_interval_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::from_slice_of_exactly_three_elements_yields_the_point ... ok
[INFO] [stdout] test tensor::point::tests::from_slice_takes_the_first_three_elements ... ok
[INFO] [stdout] test tensor::matrix::tests::clamp_with_an_inverted_interval_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::from_vector_reinterprets_a_displacement_as_a_point ... ok
[INFO] [stdout] test tensor::matrix::tests::col_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test tensor::matrix::tests::inverse_of_a_singular_matrix_panics - should panic ... ok
[INFO] [stdout] test tensor::matrix::tests::row_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::clamp_with_an_inverted_interval_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::from_slice_shorter_than_three_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::hypot_combines_the_coordinates_pairwise ... ok
[INFO] [stdout] test tensor::point::tests::index_mut_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::hypot_of_length_points_stays_a_length ... ok
[INFO] [stdout] test tensor::point::tests::index_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test tensor::point::tests::div_euclid_is_the_euclidean_quotient_of_every_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::index_mut_replaces_the_coordinate_at_that_position ... ok
[INFO] [stdout] test tensor::point::tests::indexing_yields_the_coordinate_at_that_position ... ok
[INFO] [stdout] test tensor::point::tests::is_finite_holds_when_every_coordinate_is_finite ... ok
[INFO] [stdout] test tensor::point::tests::is_infinite_does_not_hold_when_every_coordinate_is_finite ... ok
[INFO] [stdout] test tensor::point::tests::is_infinite_holds_when_a_coordinate_is_infinite ... ok
[INFO] [stdout] test tensor::point::tests::is_nan_holds_when_a_coordinate_is_not_a_number ... ok
[INFO] [stdout] test tensor::point::tests::is_normal_does_not_hold_when_a_coordinate_is_zero ... ok
[INFO] [stdout] test tensor::point::tests::is_nan_does_not_hold_when_no_coordinate_is_not_a_number ... ok
[INFO] [stdout] test tensor::point::tests::is_normal_holds_when_every_coordinate_is_normal ... ok
[INFO] [stdout] test tensor::point::tests::is_subnormal_does_not_hold_when_every_coordinate_is_normal ... ok
[INFO] [stdout] test tensor::point::tests::lerp_at_one_yields_the_ending_point ... ok
[INFO] [stdout] test tensor::point::tests::is_finite_does_not_hold_when_a_coordinate_is_infinite ... ok
[INFO] [stdout] test tensor::point::tests::is_subnormal_holds_when_a_coordinate_is_subnormal ... ok
[INFO] [stdout] test tensor::point::tests::lerp_at_zero_yields_the_starting_point ... ok
[INFO] [stdout] test tensor::point::tests::lerp_beyond_one_extrapolates_past_the_ending_point ... ok
[INFO] [stdout] test tensor::point::tests::lerp_holds_when_the_displacement_between_the_ends_overflows ... ok
[INFO] [stdout] test tensor::point::tests::lerp_interpolates_between_the_points ... ok
[INFO] [stdout] test tensor::point::tests::lerp_of_length_points_takes_a_dimensionless_factor ... ok
[INFO] [stdout] test tensor::point::tests::max_element_is_the_largest_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::map_applies_the_function_to_every_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::max_ignores_a_not_a_number_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::max_of_a_point_with_itself_is_that_point ... ok
[INFO] [stdout] test tensor::point::tests::max_takes_the_larger_of_each_pair_of_coordinates ... ok
[INFO] [stdout] test tensor::point::tests::midpoint_is_equidistant_from_both_points ... ok
[INFO] [stdout] test tensor::point::tests::min_ignores_a_not_a_number_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::min_of_a_point_with_itself_is_that_point ... ok
[INFO] [stdout] test tensor::point::tests::min_takes_the_smaller_of_each_pair_of_coordinates ... ok
[INFO] [stdout] test tensor::point::tests::midpoint_agrees_with_interpolating_halfway ... ok
[INFO] [stdout] test tensor::point::tests::mul_add_of_length_points_takes_a_dimensionless_factor ... ok
[INFO] [stdout] test tensor::point::tests::min_element_is_the_smallest_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::mul_add_scales_then_offsets_every_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::midpoint_is_halfway_between_the_points ... ok
[INFO] [stdout] test tensor::point::tests::round_sends_a_half_away_from_zero ... ok
[INFO] [stdout] test tensor::point::tests::rem_euclid_is_nonnegative_for_a_negative_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::new_sets_the_three_coordinates ... ok
[INFO] [stdout] test tensor::point::tests::points_are_equal_exactly_when_all_coordinates_match ... ok
[INFO] [stdout] test tensor::point::tests::signum_of_a_length_point_is_dimensionless ... ok
[INFO] [stdout] test tensor::point::tests::round_ties_even_sends_a_half_to_the_even_integer ... ok
[INFO] [stdout] test tensor::point::tests::signum_of_a_negative_zero_coordinate_is_minus_one ... ok
[INFO] [stdout] test tensor::point::tests::signum_takes_the_sign_of_every_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::sub_assign_translates_the_point_in_place ... ok
[INFO] [stdout] test tensor::point::tests::subtracting_a_point_from_itself_yields_the_zero_vector ... ok
[INFO] [stdout] test tensor::point::tests::splat_repeats_one_value_across_all_coordinates ... ok
[INFO] [stdout] test tensor::point::tests::subtracting_a_vector_translates_the_point_backward ... ok
[INFO] [stdout] test tensor::point::tests::the_displacement_between_points_translates_one_to_the_other ... ok
[INFO] [stdout] test tensor::point::tests::to_array_yields_coordinates_in_order ... ok
[INFO] [stdout] test tensor::point::tests::the_origin_has_zero_coordinates ... ok
[INFO] [stdout] test tensor::point::tests::to_vector_yields_the_position_relative_to_the_origin ... ok
[INFO] [stdout] test tensor::point::tests::subtracting_two_points_yields_the_displacement_between_them ... ok
[INFO] [stdout] test tensor::point::tests::truncating_and_the_fractional_part_reconstruct_the_point ... ok
[INFO] [stdout] test tensor::point::tests::with_x_replaces_only_the_first_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::with_y_replaces_only_the_second_coordinate ... ok
[INFO] [stdout] test tensor::vector::tests::a_double_on_the_left_scales_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::a_vector_with_a_zero_component_is_not_normal ... ok
[INFO] [stdout] test tensor::vector::tests::add_assign_sums_the_components_in_place ... ok
[INFO] [stdout] test tensor::vector::tests::abs_takes_the_magnitude_of_every_component ... ok
[INFO] [stdout] test tensor::point::tests::trunc_drops_the_fractional_part_of_every_coordinate ... ok
[INFO] [stdout] test tensor::vector::tests::a_single_on_the_left_scales_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::addition_is_commutative ... ok
[INFO] [stdout] test tensor::point::tests::vector_roundtrip_preserves_the_point ... ok
[INFO] [stdout] test tensor::vector::tests::angle_between_perpendicular_vectors_is_a_quarter_turn ... ok
[INFO] [stdout] test tensor::vector::tests::angle_between_is_unchanged_by_a_scale_beyond_the_squared_range ... ok
[INFO] [stdout] test tensor::vector::tests::angle_between_antiparallel_vectors_is_a_half_turn ... ok
[INFO] [stdout] test tensor::vector::tests::angle_between_length_vectors_is_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::angle_between_is_unchanged_by_a_scale_below_the_squared_range ... ok
[INFO] [stdout] test tensor::vector::tests::ceil_leaves_an_integer_component_unchanged ... ok
[INFO] [stdout] test tensor::vector::tests::clamp_lowers_a_component_above_the_interval_to_the_upper_bound ... ok
[INFO] [stdout] test tensor::vector::tests::clamp_raises_a_component_below_the_interval_to_the_lower_bound ... ok
[INFO] [stdout] test tensor::vector::tests::cross_product_is_anticommutative ... ok
[INFO] [stdout] test tensor::vector::tests::cross_returns_the_right_handed_product ... ok
[INFO] [stdout] test tensor::vector::tests::addition_sums_the_components ... ok
[INFO] [stdout] test tensor::vector::tests::array_roundtrip_preserves_the_vector ... ok
[INFO] [stdout] test tensor::vector::tests::default_is_the_zero_vector ... ok
[INFO] [stdout] test tensor::vector::tests::div_euclid_of_length_vectors_is_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::div_assign_scales_every_component_down_in_place ... ok
[INFO] [stdout] test tensor::vector::tests::clamp_with_an_inverted_interval_panics - should panic ... ok
[INFO] [stdout] test tensor::vector::tests::copysign_keeps_the_magnitudes_and_takes_the_signs_of_its_argument ... ok
[INFO] [stdout] test tensor::vector::tests::cross_product_is_orthogonal_to_both_factors ... ok
[INFO] [stdout] test tensor::vector::tests::ceil_rounds_every_component_toward_positive_infinity ... ok
[INFO] [stdout] test tensor::vector::tests::dividing_a_length_vector_by_a_length_leaves_it_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::dividing_by_a_number_scales_every_component_down ... ok
[INFO] [stdout] test tensor::vector::tests::element_product_multiplies_the_three_components ... ok
[INFO] [stdout] test tensor::vector::tests::dot_product_is_symmetric ... ok
[INFO] [stdout] test tensor::vector::tests::floor_leaves_an_integer_component_unchanged ... ok
[INFO] [stdout] test tensor::vector::tests::dot_multiplies_and_sums_the_components ... ok
[INFO] [stdout] test tensor::vector::tests::angle_between_a_vector_and_itself_is_zero ... ok
[INFO] [stdout] test tensor::vector::tests::element_sum_of_the_zero_vector_is_zero ... ok
[INFO] [stdout] test tensor::vector::tests::floor_rounds_every_component_toward_negative_infinity ... ok
[INFO] [stdout] test tensor::vector::tests::element_sum_adds_the_three_components ... ok
[INFO] [stdout] test tensor::vector::tests::fract_of_an_integer_component_is_zero ... ok
[INFO] [stdout] test tensor::vector::tests::hypot_combines_the_components_pairwise ... ok
[INFO] [stdout] test tensor::vector::tests::fract_keeps_the_fractional_part_of_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::hypot_of_length_vectors_stays_a_length ... ok
[INFO] [stdout] test tensor::vector::tests::from_array_takes_components_in_order ... ok
[INFO] [stdout] test tensor::vector::tests::from_slice_of_exactly_three_elements_yields_the_vector ... ok
[INFO] [stdout] test tensor::vector::tests::from_slice_shorter_than_three_panics - should panic ... ok
[INFO] [stdout] test tensor::vector::tests::from_slice_takes_the_first_three_elements ... ok
[INFO] [stdout] test tensor::vector::tests::index_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test tensor::vector::tests::is_finite_holds_when_every_component_is_finite ... ok
[INFO] [stdout] test tensor::vector::tests::clamp_agrees_with_taking_the_maximum_then_the_minimum ... ok
[INFO] [stdout] test tensor::vector::tests::clamp_leaves_a_component_inside_the_interval_unchanged ... ok
[INFO] [stdout] test tensor::vector::tests::div_euclid_is_the_euclidean_quotient_of_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::index_mut_out_of_bounds_panics - should panic ... ok
[INFO] [stdout] test tensor::vector::tests::is_infinite_does_not_hold_when_every_component_is_finite ... ok
[INFO] [stdout] test tensor::vector::tests::is_infinite_holds_when_a_component_is_infinite ... ok
[INFO] [stdout] test tensor::vector::tests::is_subnormal_does_not_hold_when_every_component_is_normal ... ok
[INFO] [stdout] test tensor::vector::tests::is_nan_does_not_hold_when_no_component_is_not_a_number ... ok
[INFO] [stdout] test tensor::vector::tests::is_nan_holds_when_a_component_is_not_a_number ... ok
[INFO] [stdout] test tensor::vector::tests::is_normal_holds_when_every_component_is_normal ... ok
[INFO] [stdout] test tensor::vector::tests::lerp_at_zero_yields_the_starting_vector ... ok
[INFO] [stdout] test tensor::vector::tests::is_normal_does_not_hold_when_a_component_is_zero ... ok
[INFO] [stdout] test tensor::vector::tests::lerp_holds_when_the_displacement_between_the_ends_overflows ... ok
[INFO] [stdout] test tensor::vector::tests::lerp_beyond_one_extrapolates_past_the_ending_vector ... ok
[INFO] [stdout] test tensor::vector::tests::lerp_interpolates_between_the_vectors ... ok
[INFO] [stdout] test tensor::vector::tests::indexing_yields_the_component_at_that_position ... ok
[INFO] [stdout] test tensor::vector::tests::lerp_of_length_vectors_takes_a_dimensionless_factor ... ok
[INFO] [stdout] test tensor::vector::tests::is_finite_does_not_hold_when_a_component_is_infinite ... ok
[INFO] [stdout] test tensor::vector::tests::map_applies_the_function_to_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::max_ignores_a_not_a_number_component ... ok
[INFO] [stdout] test tensor::vector::tests::max_of_a_vector_with_itself_is_that_vector ... ok
[INFO] [stdout] test tensor::vector::tests::midpoint_agrees_with_interpolating_halfway ... ok
[INFO] [stdout] test tensor::vector::tests::midpoint_is_halfway_between_the_vectors ... ok
[INFO] [stdout] test tensor::vector::tests::min_takes_the_smaller_of_each_pair_of_components ... ok
[INFO] [stdout] test tensor::vector::tests::min_ignores_a_not_a_number_component ... ok
[INFO] [stdout] test tensor::vector::tests::min_element_is_the_smallest_component ... ok
[INFO] [stdout] test tensor::vector::tests::mul_add_of_length_vectors_takes_a_dimensionless_factor ... ok
[INFO] [stdout] test tensor::vector::tests::min_of_a_vector_with_itself_is_that_vector ... ok
[INFO] [stdout] test tensor::vector::tests::mul_assign_scales_every_component_in_place ... ok
[INFO] [stdout] test tensor::vector::tests::multiplying_a_dimensionless_vector_by_a_length_carries_the_dimension ... ok
[INFO] [stdout] test tensor::vector::tests::negation_is_the_additive_inverse ... ok
[INFO] [stdout] test tensor::vector::tests::new_sets_the_three_components ... ok
[INFO] [stdout] test tensor::vector::tests::multiplying_by_a_number_scales_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::norm_holds_above_the_squared_range ... ok
[INFO] [stdout] test tensor::vector::tests::negation_flips_the_sign_of_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::norm_holds_below_the_squared_range ... ok
[INFO] [stdout] test tensor::point::tests::translating_by_a_vector_and_back_returns_the_point ... ok
[INFO] [stdout] test tensor::vector::tests::norm_of_a_vector_with_a_not_a_number_component_is_not_a_number ... ok
[INFO] [stdout] test tensor::vector::tests::normalize_or_zero_of_a_length_vector_is_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::normalize_or_zero_of_the_zero_vector_is_the_zero_vector ... ok
[INFO] [stdout] test tensor::vector::tests::normalize_or_zero_rescales_a_nonzero_vector ... ok
[INFO] [stdout] test tensor::vector::tests::normalize_rescales_to_unit_length ... ok
[INFO] [stdout] test tensor::vector::tests::index_mut_replaces_the_component_at_that_position ... ok
[INFO] [stdout] test tensor::vector::tests::norm_of_a_vector_with_an_infinite_component_is_infinite ... ok
[INFO] [stdout] test tensor::vector::tests::is_subnormal_holds_when_a_component_is_subnormal ... ok
[INFO] [stdout] test tensor::vector::tests::normalize_of_a_length_vector_is_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::lerp_at_one_yields_the_ending_vector ... ok
[INFO] [stdout] test tensor::vector::tests::recip_is_its_own_inverse ... ok
[INFO] [stdout] test tensor::vector::tests::projection_and_rejection_reconstruct_the_vector ... ok
[INFO] [stdout] test tensor::vector::tests::recip_inverts_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::reflect_mirrors_the_vector_across_the_plane ... ok
[INFO] [stdout] test tensor::vector::tests::reflect_takes_a_dimensionless_normal ... ok
[INFO] [stdout] test tensor::vector::tests::normalizing_yields_a_vector_of_unit_norm ... ok
[INFO] [stdout] test tensor::vector::tests::max_takes_the_larger_of_each_pair_of_components ... ok
[INFO] [stdout] test tensor::vector::tests::reject_from_yields_the_component_orthogonal_to_the_target ... ok
[INFO] [stdout] test tensor::vector::tests::project_onto_holds_above_the_squared_range ... ok
[INFO] [stdout] test tensor::vector::tests::mul_add_scales_then_offsets_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::reflecting_twice_returns_the_vector ... ok
[INFO] [stdout] test tensor::vector::tests::max_element_is_the_largest_component ... ok
[INFO] [stdout] test tensor::vector::tests::project_onto_yields_the_component_along_the_target ... ok
[INFO] [stdout] test tensor::vector::tests::reject_from_holds_above_the_squared_range ... ok
[INFO] [stdout] test tensor::vector::tests::norm_is_the_euclidean_length ... ok
[INFO] [stdout] test tensor::vector::tests::rem_euclid_is_nonnegative_for_a_negative_component ... ok
[INFO] [stdout] test tensor::vector::tests::sub_assign_differences_the_components_in_place ... ok
[INFO] [stdout] test tensor::vector::tests::subtraction_differences_the_components ... ok
[INFO] [stdout] test tensor::vector::tests::round_sends_a_half_away_from_zero ... ok
[INFO] [stdout] test tensor::vector::tests::round_ties_even_sends_a_half_to_the_even_integer ... ok
[INFO] [stdout] test tensor::vector::tests::signum_takes_the_sign_of_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::summing_owned_vectors_adds_them ... ok
[INFO] [stdout] test tensor::vector::tests::the_one_vector_has_every_component_set_to_one ... ok
[INFO] [stdout] test tensor::vector::tests::the_x_axis_vector_points_along_the_first_component ... ok
[INFO] [stdout] test tensor::vector::tests::the_y_axis_vector_points_along_the_second_component ... ok
[INFO] [stdout] test tensor::vector::tests::signum_of_a_negative_zero_component_is_minus_one ... ok
[INFO] [stdout] test tensor::vector::tests::norm_of_the_zero_vector_is_zero ... ok
[INFO] [stdout] test tensor::vector::tests::the_z_axis_vector_points_along_the_third_component ... ok
[INFO] [stdout] test tensor::vector::tests::to_array_yields_components_in_order ... ok
[INFO] [stdout] test tensor::vector::tests::trunc_drops_the_fractional_part_of_every_component ... ok
[INFO] [stdout] test tensor::vector::tests::truncating_and_the_fractional_part_reconstruct_the_vector ... ok
[INFO] [stdout] test tensor::vector::tests::try_normalize_of_a_length_vector_is_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::try_normalize_of_a_non_finite_vector_is_none ... ok
[INFO] [stdout] test tensor::vector::tests::try_normalize_of_a_nonzero_vector_is_some ... ok
[INFO] [stdout] test tensor::vector::tests::try_normalize_of_the_zero_vector_is_none ... ok
[INFO] [stdout] test tensor::vector::tests::vectors_are_equal_exactly_when_all_components_match ... ok
[INFO] [stdout] test tensor::vector::tests::with_x_replaces_only_the_first_component ... ok
[INFO] [stdout] test tensor::vector::tests::norm_squared_is_the_square_of_the_norm ... ok
[INFO] [stdout] test tensor::vector::tests::scaling_on_either_side_gives_the_same_vector ... ok
[INFO] [stdout] test tensor::vector::tests::with_y_replaces_only_the_second_component ... ok
[INFO] [stdout] test tensor::vector::tests::norm_squared_is_the_sum_of_the_squared_components ... ok
[INFO] [stdout] test tensor::vector::tests::signum_of_a_length_vector_is_dimensionless ... ok
[INFO] [stdout] test tensor::vector::tests::with_z_replaces_only_the_third_component ... ok
[INFO] [stdout] test tensor::vector::tests::splat_repeats_one_value_across_all_components ... ok
[INFO] [stdout] test tensor::vector::tests::zip_map_combines_the_two_vectors_component_wise ... ok
[INFO] [stdout] test tensor::vector::tests::summing_no_vectors_yields_the_zero_vector ... ok
[INFO] [stdout] test tensor::vector::tests::summing_borrowed_vectors_adds_them ... ok
[INFO] [stdout] test tensor::vector::tests::the_zero_vector_is_the_additive_identity ... ok
[INFO] [stdout] test tensor::vector::tests::the_zero_vector_has_zero_components ... ok
[INFO] [stdout] test tensor::point::tests::with_z_replaces_only_the_third_coordinate ... ok
[INFO] [stdout] test tensor::point::tests::zip_map_combines_the_two_points_coordinate_wise ... ok
[INFO] [stdout] test tensor::vector::tests::a_double_on_the_left_scales_a_length_vector ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 697 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests vita_core
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c", kill_on_drop: false }`
[INFO] [stdout] 538eadf1f9f7b709fa376c7c3edbfaa7e6cf6d707277e0a7cc92e9c56f05dd0c
