(out, a)
| 75144 | return out; |
| 75145 | } |
| 75146 | function ln(out, a) { |
| 75147 | var x = a[0], y = a[1], z = a[2], w = a[3]; |
| 75148 | var r = Math.sqrt(x * x + y * y + z * z); |
| 75149 | var t = r > 0 ? Math.atan2(r, w) / r : 0; |
| 75150 | out[0] = x * t; |
| 75151 | out[1] = y * t; |
| 75152 | out[2] = z * t; |
| 75153 | out[3] = 0.5 * Math.log(x * x + y * y + z * z + w * w); |
| 75154 | return out; |
| 75155 | } |
| 75156 | function pow(out, a, b) { |
| 75157 | ln(out, a); |
| 75158 | scale(out, out, b); |