// SetString interprets s as a number in the given base // and sets z to that value. The base must be in the range [2,36]. // SetString returns an error if s cannot be parsed or the base is invalid. func (q *Rat) SetString(s string, base int) error { q.doinit() if base < 2 || base > 36 { return os.ErrInvalid } p := C.CString(s) defer C.free(unsafe.Pointer(p)) if C.mpq_set_str(&q.i[0], p, C.int(base)) < 0 { return os.ErrInvalid } return nil }
// SetStringBase interprets s as a number in the given base // and sets z to that value. The base must be in the range [2,36]. // SetString returns an error if s cannot be parsed or the base is invalid. func (q *Rat) SetStringBase(s string, base int) (*Rat, bool) { q.doinit() if base < 2 || base > 36 { return nil, false } p := C.CString(s) defer C.free(unsafe.Pointer(p)) if C.mpq_set_str(&q.i[0], p, C.int(base)) < 0 { return nil, false } C.mpq_canonicalize(&q.i[0]) return q, true }