Skip to content

monime-lab/gomath

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gomath

Essential Maths go library

Floats to rationals relies on Continued Fraction.

It's sometimes more appropriate than default big.Rat SetString, because you can get 2/3 from 0.6666 by specifiing required precision. In big.Rat SetString you can only get 3333/50000, and have no way to manipulate than (as of go 1.11).

Example

func ExampleNewRatP() {
	fmt.Println(NewRatP(0.6666, 0.01).String())
	fmt.Println(NewRatP(0.981, 0.001).String())
	fmt.Println(NewRatP(0.75, 0.01).String())
	// Output:
	// 2/3
	// 981/1000
	// 3/4
}
func ExampleNewRatI() {
	fmt.Println(NewRatI(0.6667, 3).String())
	fmt.Println(NewRatI(0.6667, 4).String())
	// Output:
	// 2/3
	// 6667/10000
}

Docs

import dectofrac "github.com/av-elier/go-decimal-to-rational"

func NewRatI

func NewRatI(val float64, iterations int64) *big.Rat

NewRatI returns rational from decimal using iterations number of iterations in Continued Fraction algorythm

func NewRatP

func NewRatP(val float64, stepPrecision float64) *big.Rat

NewRatP returns rational from decimal by going as mush iterations, until next fraction is less than stepPrecision

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%