def test_prob_wrong_input_negative_float(self):
     """
     If the input value n is negative float, probability(n)
     would raise ValueError('Input not of integer instance')
     """
     with self.assertRaisesRegexp(ValueError, "instance"):
         mpmath.nstr(probability(-4.3), 8)
 def test_prob_wrong_input_negative_number(self):
     """
     If the input value n is negative number, probability(n)
     would raise ValueError('Input not a positive integer')
     """
     with self.assertRaisesRegexp(ValueError, "positive"):
         mpmath.nstr(probability(-4), 8)
 def test_prob_wrong_input_string(self):
     """
     If the input value n is a string, probability(n)
     would raise ValueError('Input not of integer instance')
     """
     with self.assertRaisesRegexp(ValueError, "instance"):
         mpmath.nstr(probability("die"), 8)
 def test_prob_wrong_input_zero(self):
     """
     If the input value n is zero, probability(n)
     would raise ValueError('Input not a positive integer')
     """
     with self.assertRaisesRegexp(ValueError, "positive"):
         mpmath.nstr(probability(0), 8)
Example #5
0
def test_nstr():
    m = matrix([[0.75, 0.190940654, -0.0299195971],
                [0.190940654, 0.65625, 0.205663228],
                [-0.0299195971, 0.205663228, 0.64453125e-20]])
    assert nstr(m, 4, min_fixed=-inf) == \
    '''[    0.75  0.1909                    -0.02992]
[  0.1909  0.6563                      0.2057]
[-0.02992  0.2057  0.000000000000000000006445]'''
    assert nstr(m, 4) == \
    '''[    0.75  0.1909   -0.02992]
Example #6
0
def test_nstr():
    m = matrix([[0.75, 0.190940654, -0.0299195971],
                [0.190940654, 0.65625, 0.205663228],
                [-0.0299195971, 0.205663228, 0.64453125e-20]])
    assert nstr(m, 4, min_fixed=-inf) == \
    '''[    0.75  0.1909                    -0.02992]
[  0.1909  0.6563                      0.2057]
[-0.02992  0.2057  0.000000000000000000006445]'''
    assert nstr(m, 4) == \
    '''[    0.75  0.1909   -0.02992]
def test_matrix_basic():
    A1 = matrix(3)
    for i in xrange(3):
        A1[i,i] = 1
    assert A1 == eye(3)
    assert A1 == matrix(A1)
    A2 = matrix(3, 2)
    assert not A2._matrix__data
    A3 = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    assert list(A3) == range(1, 10)
    A3[1,1] = 0
    assert not (1, 1) in A3._matrix__data
    A4 = matrix([[1, 2, 3], [4, 5, 6]])
    A5 = matrix([[6, -1], [3, 2], [0, -3]])
    assert A4 * A5 == matrix([[12, -6], [39, -12]])
    assert A1 * A3 == A3 * A1 == A3
    try:
        A2 * A2
        assert False
    except ValueError:
        pass
    l = [[10, 20, 30], [40, 0, 60], [70, 80, 90]]
    A6 = matrix(l)
    assert A6.tolist() == l
    assert A6 == eval(repr(A6))
    A6 = matrix(A6, force_type=float)
    assert A6 == eval(repr(A6))
    assert A6*1j == eval(repr(A6*1j))
    assert A3 * 10 == 10 * A3 == A6
    assert A2.rows == 3
    assert A2.cols == 2
    A3.rows = 2
    A3.cols = 2
    assert len(A3._matrix__data) == 3
    assert A4 + A4 == 2*A4
    try:
        A4 + A2
    except ValueError:
        pass
    assert sum(A1 - A1) == 0
    A7 = matrix([[1, 2], [3, 4], [5, 6], [7, 8]])
    x = matrix([10, -10])
    assert A7*x == matrix([-10, -10, -10, -10])
    A8 = ones(5)
    assert sum((A8 + 1) - (2 - zeros(5))) == 0
    assert (1 + ones(4)) / 2 - 1 == zeros(4)
    assert eye(3)**10 == eye(3)
    try:
        A7**2
        assert False
    except ValueError:
        pass
    A9 = randmatrix(3)
    A10 = matrix(A9)
    A9[0,0] = -100
    assert A9 != A10
    A11 = matrix(randmatrix(2, 3), force_type=mpi)
    for a in A11:
        assert isinstance(a, mpi)
    assert nstr(A9)
def main():
	for N in range(2,100):
		# get dbN coeffients
		dbN = daubechis(N)

		# write coeffients
		f = open('db' + str(N).zfill(2) +'_coefficients.txt', 'w')
		f.write('# db' + str(N) + ' scaling coefficients\n')
		for i, h in enumerate(dbN):
			f.write('h['+ str(i) + ']='+ sm.nstr(h,40) + '\n')
		f.close()

		# get an approximation of scaling function
		x, phi, psi = scipy.signal.cascade(dbN)

		# plot scaling function
		plt.plot(x, phi, 'k')
		plt.grid()
		plt.title('db' + str(N) + ' scaling function')
		plt.savefig('db' + str(N).zfill(2) + '_scaling' + '.png')
		plt.clf()

		# plot wavelet
		plt.plot(x, psi, 'k')
		plt.grid()
		plt.title( 'db' + str(N) + " wavelet" )
		plt.savefig('db' + str(N).zfill(2) + '_wavelet' + '.png')
		plt.clf()
 def test_prob_2_sided_die(self):
     """ test for n = 2 : P(n=1) = 0.5. This is like a coin toss.
         all outcomes = {HH, HT, TH, TT}
         desired outcomes = {HT, TH}
         probability = 2/4 = 0.5
     """
     self.assertEqual(mpmath.nstr(probability(2), 8), "0.5")
Example #10
0
File: D3EUtil.py Project: Q-KIM/D3E
def cramerVonMises(x, y):

	try:
		x = sorted(x);
		y = sorted(y);

		pool = x + y;

		ps, pr = _sortRank(pool)

		rx = array ( [ pr[ind] for ind in [ ps.index(element) for element in x ] ] )
		ry = array ( [ pr[ind] for ind in [ ps.index(element) for element in y ] ] )

		n = len(x)
		m = len(y)

		i = array(range(1, n+1))
		j = array(range(1, m+1))

		u = n * sum ( power( (rx - i), 2 ) ) + m * sum ( power((ry - j), 2) )

		t = u / (n*m*(n+m)) - (4*n*m-1) / (6 * (n+m))
		Tmu = 1/6 + 1 / (6*(n+m))
		Tvar = 1/45 * ( (m+n+1) / power((m+n),2) ) * (4*m*n*(m+n) - 3*(power(m,2) + power(n,2)) - 2*m*n) / (4*m*n)
		t = (t - Tmu) / power(45*Tvar, 0.5) + 1/6

		if t < 0:
			return -1
		elif t <= 12:
			a = 1-mp.nsum(lambda x : ( mp.gamma(x+0.5) / ( mp.gamma(0.5) * mp.fac(x) ) ) *
					 mp.power( 4*x + 1, 0.5 ) * mp.exp ( - mp.power(4*x + 1, 2) / (16*t) ) *
					  mp.besselk(0.25 , mp.power(4*x + 1, 2) / (16*t) ), [0,100] ) / (mp.pi*mp.sqrt(t))
			return float(mp.nstr(a,3))
		else:
			return 0
	except Exception as e:
		print e
		return -1
Example #11
0
def fstr(x):
  s = nstr(x, n=digits)
  return s + '_pfdp'
 def test_prob_1_sided_die(self):
     """ test for n = 1 : P(n=1) = 1
     """
     self.assertEqual(mpmath.nstr(probability(1), 8), "1.0")
Example #13
0
def fstr(x):
  s = nstr(x, n=digits)
  s = s.replace('e', 'd')
  if s.find('d') == -1:
    s = s + 'd0'
  return s
Example #14
0
##
## write python module 'quadrature.py'
##

with open('quadrature.py', 'w') as f:
  f.write('# this file was generated by "mksmat.py"\n')
  f.write('table = {\n')

  for q in quads:
    for n in quads[q]:
      for r in quads[q][n]:
        f.write("('%s',%d,%d): {\n" % (q, n, r))
        (nodes, smat) = quads[q][n][r]

        f.write("  'nodes': [" + ',\n'.join(
          [nstr(x, digits) for x in nodes]) + '],\n')
        f.write("  'matrix': [ \n")
        for row in smat:
          f.write('[' + ',\n'.join([nstr(x, digits) for x in row]) + '],\n')
        f.write("  ] }, \n")

  f.write('}\n\n')

##
## write C++ look-up tables '*.hpp' (no refinements)
##

# First rename quadratures.
quads['gauss_lobatto'] = quads['GL']
del quads['GL']
quads['gauss_radau'] = quads['GR']
        # Remez algorithm --step4--
        if check_convergence(list_a, list_x):
            return list_a, d, list_x, count

    else:
        raise Exception('[ERROR]Remez algorithm failed')


if __name__ == '__main__':
    print('Remez algorithm calculating...', end='')
    list_a, d, list_x, count = remez()

    print(' OK')
    for k, a in enumerate(list_a):
        print('a[' + str(k) + ']=', sm.nstr(a, 17))

    print('d=', sm.nstr(d, 17))

    # -2*s0*s1*s3*x**3 + s0*s2*x + s1**2*s3*x**4 + x**2*(s0**2*s3 - s1*s2)
    def f(s0, s1, s2, s3):
        return s0*s2            - list_a[1], \
               s0**2*s3 - s1*s2 - list_a[2], \
               -2*s0*s1*s3      - list_a[3], \
               s1**2*s3         - list_a[4]

    print()
    print('Newton method calculating...', end='')
    initilal = (1.2732395447351627, 0.40528473456935109, 0.77633023248007499,
                0.22308510060189463)
    list_s = sm.findroot(f,
        list_x = update_maximum_error_points(list_a)

        # Remez algorithm --step4--
        if check_convergence(list_a, list_x):
            return list_a, d, list_x, count

    else:
        raise Exception('[ERROR]Remez algorithm failed')

if __name__ == '__main__':
    print('Remez algorithm calculating...', end='')
    list_a, d, list_x, count = remez()

    print(' OK')
    for k,a in enumerate(list_a):
        print('a[' + str(k) + ']=', sm.nstr(a, 17))

    print('d=', sm.nstr(d, 17))

    # -2*s0*s1*s3*x**3 + s0*s2*x + s1**2*s3*x**4 + x**2*(s0**2*s3 - s1*s2)
    def f(s0,s1,s2,s3):
        return s0*s2            - list_a[1], \
               s0**2*s3 - s1*s2 - list_a[2], \
               -2*s0*s1*s3      - list_a[3], \
               s1**2*s3         - list_a[4]

    print()
    print('Newton method calculating...', end='')
    initilal = (1.2732395447351627, 0.40528473456935109, 0.77633023248007499, 0.22308510060189463);
    list_s = sm.findroot(
            f,