Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
using System; using System.Linq; using System.Collections.Generic; namespace MandelBrootSet { public struct Complex: IEquatable
, IFormattable { //Definición de variables de entorno global. bool gotMagnitude, gotMagnitudeSquared; double magnitude, magnitudeSquared; public Complex(double real, double imaginary) : this() { Real = real; Imaginary = imaginary; } public double Real { private set; get; } public double Imaginary { private set; get; } //Cálculo del módulo y su cuadrado. public double MagnitudeSquared { get { if (gotMagnitudeSquared) { return magnitudeSquared; } magnitudeSquared = Real * Real + Imaginary * Imaginary; gotMagnitudeSquared = true; return magnitudeSquared; } } public double Magnitude { get { if (gotMagnitude) { return magnitude; } magnitude = Math.Sqrt(magnitudeSquared); gotMagnitude = true; return magnitude; } } //Sección de Operadores y funciones auxiliares public static Complex operator +(Complex left, Complex right) { return new Complex(left.Real + right.Real, left.Imaginary + right.Imaginary); } public static Complex operator -(Complex left, Complex right) { return new Complex(left.Real - right.Real, left.Imaginary - right.Imaginary); } public static Complex operator *(Complex left, Complex right) { return new Complex(left.Real * right.Real - left.Imaginary * right.Imaginary, left.Real * right.Imaginary + left.Imaginary * right.Real); } public static bool operator ==(Complex left, Complex right) { return left.Real == right.Real && left.Imaginary == right.Imaginary; } public static bool operator !=(Complex left, Complex right) { return !(left == right); } public static implicit operator Complex(double value) { return new Complex(value, 0); } public static implicit operator Complex(int value) { return new Complex(value, 0); } public override int GetHashCode() { return Real.GetHashCode() + Imaginary.GetHashCode(); } public override bool Equals(Object value) { return Real.Equals(((Complex)value).Real) && Imaginary.Equals(((Complex)value).Imaginary); } public bool Equals(Complex value) { return Real.Equals(value) && Imaginary.Equals(value); } public override string ToString() { return String.Format("{0} {1} {2}i", Real, RealImaginaryConnector(Imaginary), Math.Abs(Imaginary)); } public string ToString(string format) { return String.Format("{0} {1} {2}i", Real.ToString(format), RealImaginaryConnector(Imaginary), Math.Abs(Imaginary).ToString(format)); } public string ToString(IFormatProvider formatProvider) { return String.Format("{0} {1} {2}i", Real.ToString(formatProvider), RealImaginaryConnector(Imaginary), Math.Abs(Imaginary).ToString(formatProvider)); } public string ToString(string format, IFormatProvider formatProvider) { return String.Format("{0} {1} {2}i", Real.ToString(format, formatProvider), RealImaginaryConnector(Imaginary), Math.Abs(Imaginary).ToString(format, formatProvider)); } string RealImaginaryConnector(double value) { return Math.Sign(value) > 0 ? "+" : "\u2013"; } } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)