root / synthbench / euroben-dm / mod2ci / rotb.f @ 0:839f52ef7657
History | View | Annotate | Download (830 Bytes)
1 | 0:839f52ef7657 | louridas | Subroutine rotb( arg, c, s ) |
---|---|---|---|
2 | 0:839f52ef7657 | louridas | ! ---------------------------------------------------------------------- |
3 | 0:839f52ef7657 | louridas | ! --- Stores rotation factors arg according to sine/cosine terms of |
4 | 0:839f52ef7657 | louridas | ! Givens transformation (used in rgmres). |
5 | 0:839f52ef7657 | louridas | ! ---------------------------------------------------------------------- |
6 | 0:839f52ef7657 | louridas | Use numerics |
7 | 0:839f52ef7657 | louridas | Use floptime |
8 | 0:839f52ef7657 | louridas | Implicit None |
9 | 0:839f52ef7657 | louridas | |
10 | 0:839f52ef7657 | louridas | Real(l_) :: arg, c, s |
11 | 0:839f52ef7657 | louridas | ! ---------------------------------------------------------------------- |
12 | 0:839f52ef7657 | louridas | If ( c == 0.0_l_ ) Then |
13 | 0:839f52ef7657 | louridas | arg = 1.0_l_ |
14 | 0:839f52ef7657 | louridas | Else If ( Abs( s ) < Abs( c ) ) Then |
15 | 0:839f52ef7657 | louridas | arg = 0.5_l_*s*Sign( 1.0_l_, c ) |
16 | 0:839f52ef7657 | louridas | flops = flops + 6 |
17 | 0:839f52ef7657 | louridas | Else |
18 | 0:839f52ef7657 | louridas | arg = 2.0_l_*Sign( 1.0_l_, s )/c |
19 | 0:839f52ef7657 | louridas | flops = flops + 6 |
20 | 0:839f52ef7657 | louridas | End If |
21 | 0:839f52ef7657 | louridas | ! ---------------------------------------------------------------------- |
22 | 0:839f52ef7657 | louridas | End Subroutine rotb |