22 SUBROUTINE dixon_resultant_real_roots( A, B, C, D, n_roots, u, method, flag)
26 integer,
intent(in) :: method
27 integer,
intent(inout) :: flag
28 integer,
intent(out) :: n_roots
29 real (DP),
intent(out) ::
u(3, 16)
33 integer i, j,
n,
info, k(16), ktmp
34 real (DP) a(0:2, 0:2), b(0:2, 0:2), c(0:2, 0:2), d(0:2, 0:2)
35 real (DP) r(0:2, 8, 8), ga(16, 16), gb(16, 16)
36 real (DP) e_alpha_r(16), e_alpha_i(16), e_beta(16), e(16), etmp, v(16, 16)
38 real start_time, stop_time
64 (/ 0.0_dp, a(0,i), a(1,i), a(2,i), 0.0_dp, b(0,i), b(1,i), b(2,i), &
65 a(0,i), a(1,i), a(2,i), 0.0_dp, b(0,i), b(1,i), b(2,i), 0.0_dp, &
66 0.0_dp, b(0,i), b(1,i), b(2,i), 0.0_dp, c(0,i), c(1,i), c(2,i), &
67 b(0,i), b(1,i), b(2,i), 0.0_dp, c(0,i), c(1,i), c(2,i), 0.0_dp, &
68 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, d(0,i), d(1,i), d(2,i), &
69 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, d(0,i), d(1,i), d(2,i), 0.0_dp, &
70 0.0_dp, d(0,i), d(1,i), d(2,i), 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, &
71 d(0,i), d(1,i), d(2,i), 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp, 0.0_dp /),&
72 shape = (/ 8, 8 /), order = (/ 2, 1 /))
82 ga(9:16, 1:8 ) = -r(0, :, :)
83 ga(9:16, 9:16) = -r(1, :, :)
89 gb(9:16, 9:16) = r(2, :, :)
92 call cpu_time(start_time)
94 call rgg(16, 16, ga, gb, e_alpha_r, e_alpha_i, e_beta, 1, v,
info)
95 call cpu_time(stop_time)
100 print '("Dixon_Resultant_Real_Roots: Eigenvector calculation failure,", &
115 if (abs(e_alpha_i(i)) < epsilon(0.0_dp))
then
118 e(
n) = e_alpha_r(i)/e_beta(i)
125 if (e(i) > e(j))
then
142 if (abs(v(1,k(i))) .gt. .00000001)
then
144 u(1, i) = v(2, k(i)) * denom
145 u(2, i) = v(5, k(i)) * denom
148 u(1, i) = v(4, k(i)) * denom
149 u(2, i) = v(7, k(i)) * denom
160 call charpoly(a, b, c, d, n_roots,
u, flag)
167 end SUBROUTINE dixon_resultant_real_roots
virtual VectorOption & n(Size const n_a)=0
Fixed number of values required assignment.
std::string print(utility::sql_database::sessionOP db_session) const
static void info(const char *fmt,...)
size_type u() const
Upper index.
ChunkVector & reshape(size_type const size_a, ChunkExponent const &chunk_exponent_a, T const &value=T())
Reshape + Fill Value: Values Preserved.