
import numpy as np

b = np.array([
	[ 0.015376620998058, 0.021474027715508, 0.000000000000000 ],
	[ 0.035183023744054, 0.014373156671397, 0.107157609486217 ],
	[ 0.053579610233586, 0.092599215594225, 0.000000000000000 ],
	[ 0.069785338963077, 0.011827744638032, 0.031130901929808 ],
	[ 0.083134602908497, 0.158470033694399, 0.000000000000000 ],
	[ 0.093080500007781, 0.003842920901955, 0.361711488583977 ],
	[ 0.099215742663556, 0.197412900561057, 0.000000000000000 ],
	[ 0.101289120962780, 0.000000000000000, 0.000000000000000 ],
	[ 0.099215742663556, 0.197412902276762, 0.000000000000000 ],
	[ 0.093080500007781, 0.003842917758458, 0.361711488583963 ],
	[ 0.083134602908497, 0.158470037700532, 0.000000000000000 ],
	[ 0.069785338963077, 0.011827740544188, 0.031130901929822 ],
	[ 0.053579610233586, 0.092599218962002, 0.000000000000000 ],
	[ 0.035183023744054, 0.014373154619738, 0.107157609486213 ],
	[ 0.015376620998058, 0.021474028361748, 0.000000000000000 ],
])

c = np.array([
	[ 0.00600374098975726 ],
	[ 0.03136330379964697 ],
	[ 0.07589670829478634 ],
	[ 0.13779113431991491 ],
	[ 0.21451391369573058 ],
	[ 0.30292432646121836 ],
	[ 0.39940295300128270 ],
	[ 0.49999999999999994 ],
	[ 0.60059704699871719 ],
	[ 0.69707567353878153 ],
	[ 0.78548608630426942 ],
	[ 0.86220886568008526 ],
	[ 0.92410329170521366 ],
	[ 0.96863669620035286 ],
	[ 0.99399625901024291 ],
])

if __name__ == "__main__":
	# Testing
	from scipy.integrate import quad
	
	f = np.sin
	alpha, beta = 0., 5.
	
	ex, fehlerschaetzer = quad(f, alpha, beta, epsabs = 1e-13, epsrel = 1e-13)
	fc=f(alpha + c * (beta - alpha))
	approx=(b * fc).sum(0) * (beta - alpha)
	print("Fehler:\n\t15-stufig \t{0:e}\n\t14-stufig \t{1:e}\n\t 6-stufig \t{2:e}".format(abs(approx[0] - ex), abs(approx[1] - ex), abs(approx[2] - ex)))
