Listing 5: Using the numeric objects from VB.NET.
Imports System
Imports System.Runtime.InteropServices
Imports NAGLIB
Module Module1
Public Class DCLASS
Inherits NAG_FUNCTIONS
Public Function the_integrand_c(ByVal x As Double) As Double
Dim pi As Double
Dim val As Double
pi = Math.PI
val = (x * Math.Sin(x * 30) / 1 - x * x / (pi * pi * 4))
Return val
End Function
End Class
Sub Main()
Dim x, the_answer As Double
Dim flag, j, tda, n As Integer
Dim a(,), r(), a1, b1, abserr As Double
Dim tt As New DCLASS()
Dim myfun As New INTEGRAND_FUN_TYPE(AddressOf tt.the_integrand_c)
a1 = 0
b1 = Math.PI * 2
flag = 0
tt.QUADRATURE(a1, b1, the_answer, abserr, flag, myfun)
Console.WriteLine("The integral (default number of
subintervals) = {0,8:F4}", the_answer)
tt.QUADRATURE_max_subint = 3
flag = 0
tt.QUADRATURE(a1, b1, the_answer, abserr, flag, myfun)
Console.WriteLine("The integral (number of subintervals
set to 3) = {0,8:F4}", the_answer)
x = -1
the_answer = tt.CUM_NORM(x)
Console.WriteLine("The value of the cumulative normal = {0,8:F4}", the_answer)
flag = 0
n = 4
tda = n
ReDim r(n - 1)
ReDim a(n - 1, n - 1)
' first row
a(0, 0) = 0.5
a(0, 1) = 0
a(0, 2) = 2.3
a(0, 3) = -2.6
'second row
a(1, 0) = 0
a(1, 1) = 0.5
a(1, 2) = -1.4
a(1, 3) = -0.7
' third row
a(2, 0) = 2.3
a(2, 1) = -1.4
a(2, 2) = 0.5
a(2, 3) = 0
'fourth row
a(3, 0) = -2.6
a(3, 1) = -0.7
a(3, 2) = 0
a(3, 3) = 0.5
tt.REAL_SYMM_EIGEN(n, a(0, 0), tda, r(0), flag)
Console.Write("The Eigenvalues are:")
For j = 0 To n - 1
Console.Write("{0,8:F4}", r(j))
Next j
Console.WriteLine()
End Sub
End Module