SHARE
TWEET

Untitled

a guest Jun 18th, 2019 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import kotlin.math.pow
  2. import kotlin.math.sqrt
  3.  
  4.  
  5. data class Complex(val re: Double, val im: Double) {
  6.  
  7.     companion object {
  8.         val zero = Complex(0.0, 0.0)
  9.     }
  10.  
  11.     fun reciprocal(): Complex {
  12.         val scale = re.pow(2) + re.pow(2)
  13.         return Complex(re / scale, -im / scale)
  14.     }
  15.  
  16.     fun inCardioid(): Boolean {
  17.         val pq = (re - 0.25).pow(2) + im.pow(2)
  18.         return re < sqrt(pq) - (2*pq) + 0.25
  19.     }
  20.  
  21.     fun dsq(): Double = re*re + im*im
  22.  
  23.     fun abs(): Double = sqrt(re.pow(2) + im.pow(2))
  24.  
  25.     operator fun unaryMinus(): Complex = Complex(-re, -im)
  26.     operator fun plus(other: Double): Complex = Complex(re + other, im)
  27.     operator fun minus(other: Double): Complex = Complex(re - other, im)
  28.     operator fun times(other: Double): Complex = Complex(re * other, im * other)
  29.     operator fun div(other: Double): Complex = Complex(re / other, im / other)
  30.  
  31.     operator fun plus(other: Complex): Complex =
  32.         Complex(re + other.re, im + other.im)
  33.  
  34.     operator fun minus(other: Complex): Complex =
  35.         Complex(re - other.re, im - other.im)
  36.  
  37.     operator fun times(other: Complex): Complex =
  38.         Complex(
  39.             (re * other.re) - (im * other.im),
  40.             (re * other.im) + (im * other.re))
  41.  
  42.     operator fun div(other: Complex): Complex = this * other.reciprocal()
  43.  
  44.     //@Override
  45.     //fun equals(other: Complex): Boolean = this.im == other.im && this.re == other.re
  46.  
  47. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top