package odin-algebra:rational
Overview
Implementation of the rational field over some underling ring.
Index
Types (2)
Constants (0)
This section is empty.
Variables (0)
This section is empty.
Procedures (42)
- add_ident_numeric
- add_ident_ring
- add_numeric
- add_ring
- delete_generator
- delete_rational_base
- delete_rational_commutative_ring
- delete_rational_euclidean_ring
- delete_rational_field
- delete_rational_integral_domain
- delete_rational_numeric
- delete_rational_ring
- div_numeric
- div_ring
- eq_base
- eq_numeric
- make_generator
- make_rational
- make_rational_base
- make_rational_commutative_ring
- make_rational_euclidean_ring
- make_rational_field
- make_rational_integral_domain
- make_rational_ring
- mul_ident_numeric
- mul_ident_ring
- mul_inverse
- mul_numeric
- mul_ring
- neg_numeric
- neg_ring
- sb_print_rational_base
- sb_print_rational_numeric
- set_base
- set_numeric
- simplify
- sub_numeric
- sub_ring
- test_rational_over_i64_euclidean_ring_axioms
- test_rational_over_i64_field_axioms
- test_rational_over_i64_integral_domain_axioms
- test_rational_over_i64_integral_domain_safety_axioms
Types
Rational ¶
Rational :: struct($T: typeid, $ST: typeid) { … // See source for fields }
This structure represents a rational field over some underling ring.
Inputs:
$T: the type of the numerator/denominator
$ST: the type of the algebraic structure used to operate on the numerator/denominator
Example:
Rational(i64, ring.Ring(i64))
Related Procedures With Parameters
- add_numeric
- add_ring
- delete_rational_base
- delete_rational_numeric
- div_numeric
- div_ring
- eq_base
- eq_numeric
- mul_inverse
- mul_numeric
- mul_ring
- neg_numeric
- neg_ring
- sb_print_rational_base
- sb_print_rational_numeric
- set_base
- set_numeric
- simplify
- sub_numeric
- sub_ring
- add (procedure groups)
- delete_rational (procedure groups)
- div (procedure groups)
- eq (procedure groups)
- mul (procedure groups)
- neg (procedure groups)
- sb_print_rational (procedure groups)
- set (procedure groups)
- sub (procedure groups)
Related Procedures With Returns
- add_ident_numeric
- add_ident_ring
- make_rational
- mul_ident_numeric
- mul_ident_ring
- add_ident (procedure groups)
- mul_ident (procedure groups)
RationalGeneratorInfo ¶
RationalGeneratorInfo :: struct($T: typeid, $ST: typeid) { … // See source for fields }
Constants
This section is empty.
Variables
This section is empty.
Procedures
delete_generator ¶
delete_generator :: proc(gen: prop_test.Generator($T=Rational($T, $ST))) {…}
delete_rational_base ¶
delete_rational_base :: proc(r: Rational($T, $ST)) {…}
delete_rational_commutative_ring ¶
delete_rational_commutative_ring :: proc(cr: ring.CommutativeRing($T=Rational($T, $ST))) {…}
delete_rational_euclidean_ring ¶
delete_rational_euclidean_ring :: proc(er: euclidean_ring.EuclideanRing($T=Rational($T, $ST))) {…}
delete_rational_field ¶
delete_rational_field :: proc(f: field.Field($T=Rational($T, $ST))) {…}
delete_rational_integral_domain ¶
delete_rational_integral_domain :: proc(id: integral_domain.IntegralDomain($T=Rational($T, $ST))) {…}
delete_rational_numeric ¶
delete_rational_numeric :: proc(r: Rational($T, $ST)) {…}
delete_rational_ring ¶
delete_rational_ring :: proc(r: ring.Ring($T=Rational($T, $ST))) {…}
make_generator ¶
make_generator :: proc(coefficient_generator: prop_test.Generator($T), coefficient_algebraic_structure: $ST) -> prop_test.Generator($T=Rational($T, $ST)) {…}
makes a generator for rationals given a generator of the numerator and denominator used for property based testing of rationals
make_rational ¶
make_rational :: proc(numerator: $T, denominator: $T, algebraic_structure: $ST) -> Rational($T, $ST) {…}
used to make a rational from a numerator and denominator does not clone the numerator and denominator
make_rational_base ¶
make_rational_base :: proc($T: typeid, coeffiencet_structure: $ST) -> base.Base($T=Rational($T=typeid, $ST)) {…}
makes an base structure for a rational given the numerator/denominator base structure
make_rational_commutative_ring ¶
make_rational_commutative_ring :: proc($T: typeid, coeffiencet_structure: $ST) -> ring.CommutativeRing($T=Rational($T=typeid, $ST)) {…}
make_rational_euclidean_ring ¶
make_rational_euclidean_ring :: proc($T: typeid, coeffiencet_structure: $ST) -> euclidean_ring.EuclideanRing($T=Rational($T=typeid, $ST)) {…}
makes an euclidean ring structure for a rational given the numerator/denominator commutative ring structure.
make_rational_field ¶
make_rational_field :: proc($T: typeid, coeffiencet_structure: $ST) -> field.Field($T=Rational($T=typeid, $ST)) {…}
makes an field structure for a rational given the numerator/denominator commutative ring structure.
make_rational_integral_domain ¶
make_rational_integral_domain :: proc($T: typeid, coeffiencet_structure: $ST) -> integral_domain.IntegralDomain($T=Rational($T=typeid, $ST)) {…}
makes an integral domain structure for a rational given the numerator/denominator commutative ring structure.
make_rational_ring ¶
make_rational_ring :: proc($T: typeid, coeffiencet_structure: $ST) -> ring.Ring($T=Rational($T=typeid, $ST)) {…}
makes an ring structure for a rational given the numerator/denominator ring structure.
simplify ¶
simplify :: proc(r: ^Rational($T, $ST)) {…}
if the underling structure is a euclidean ring simplifies the fraction by computing the gcd and dividing both numerator and denominator.
test_rational_over_i64_euclidean_ring_axioms ¶
test_rational_over_i64_euclidean_ring_axioms :: proc(t: ^testing.T) {…}
test_rational_over_i64_field_axioms ¶
test_rational_over_i64_field_axioms :: proc(t: ^testing.T) {…}
test_rational_over_i64_integral_domain_axioms ¶
test_rational_over_i64_integral_domain_axioms :: proc(t: ^testing.T) {…}
test_rational_over_i64_integral_domain_safety_axioms ¶
test_rational_over_i64_integral_domain_safety_axioms :: proc(t: ^testing.T) {…}
Procedure Groups
add ¶
add :: proc{ add_ring, add_numeric, }
add_ident ¶
add_ident :: proc{ add_ident_ring, add_ident_numeric, }
delete_rational ¶
delete_rational :: proc{ delete_rational_base, delete_rational_numeric, }
div ¶
div :: proc{ div_ring, div_numeric, }
eq ¶
eq :: proc{ eq_base, eq_numeric, }
mul ¶
mul :: proc{ mul_ring, mul_numeric, }
mul_ident ¶
mul_ident :: proc{ mul_ident_ring, mul_ident_numeric, }
neg ¶
neg :: proc{ neg_ring, neg_numeric, }
sb_print_rational ¶
sb_print_rational :: proc{ sb_print_rational_base, sb_print_rational_numeric, }
set ¶
set :: proc{ set_base, set_numeric, }
sub ¶
sub :: proc{ sub_ring, sub_numeric, }
Source Files
- generator.odin
- rational.odin
- rational_base.odin
- rational_euclidean_ring.odin
- rational_field.odin
- rational_integral_domain.odin
- rational_ring.odin
- tests.odin
Generation Information
Generated with odin version dev-2025-04 (vendor "odin") Linux_amd64 @ 2025-05-13 09:15:55.506976859 +0000 UTC