Example #1
0
func (x *Imp) Defined(s string) bool {
	//
	x.Clr()
	n := uint(len(s))
	if n < 7 {
		return false
	}
	if s[0] != '(' || s[n-1] != ')' {
		return false
	}
	t := str.Part(s, 1, n-2) + ","
	var p uint
	for d := D0; d < NDirs; d++ {
		if !str.Contains(t, ',', &p) {
			return false
		}
		r, err := strconv.ParseFloat(t[:p], 64)
		if err == nil {
			x.x[d] = r
		} else {
			return false
		}
		str.Rem(&t, 0, p+1)
	}
	return true
}
Example #2
0
func (x *Imp) Defined(s string) bool {
	//
	x.Clr()
	if str.Empty(s) {
		return true
	}
	str.Move(&s, true)
	x.geq0 = s[0] != '-'
	switch s[0] {
	case '+', '-':
		str.Rem(&s, 0, 1)
	}
	n := str.ProperLen(s)
	var p uint
	if str.Contains(s, '/', &p) {
		s1 := str.Part(s, p+1, n-p-1)
		if nat.Defined(&x.denom, s1) {
			if x.denom >= max {
				return false
			}
		} else {
			return false
		}
	} else {
		p = n
		x.denom = 1
	}
	s1 := str.Part(s, 0, p)
	if nat.Defined(&x.num, s1) {
		if x.num >= max {
			return false
		}
	} else {
		return false
	}
	return true
}