complex

package
v0.6.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 7, 2024 License: BSD-3-Clause Imports: 0 Imported by: 0

README

complex

Demonstrates how to access complex types in avo.

The Real() and Imag() parameter methods may be used to load the sub-components of complex arguments. The following function uses these to implement the complex norm.

	TEXT("Norm", NOSPLIT, "func(z complex128) float64")
	Doc("Norm returns the complex norm of z.")
	r = Load(Param("z").Real(), XMM())
	i = Load(Param("z").Imag(), XMM())
	MULSD(r, r)
	MULSD(i, i)
	ADDSD(i, r)
	n := XMM()
	SQRTSD(r, n)
	Store(n, ReturnIndex(0))
	RET()

Generated assembly:

// func Norm(z complex128) float64
// Requires: SSE2
TEXT ·Norm(SB), NOSPLIT, $0-24
	MOVSD  z_real+0(FP), X0
	MOVSD  z_imag+8(FP), X1
	MULSD  X0, X0
	MULSD  X1, X1
	ADDSD  X1, X0
	SQRTSD X0, X2
	MOVSD  X2, ret+16(FP)
	RET

Documentation

Overview

Package complex shows how to work with complex types in avo.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Imag

func Imag(z complex128) float64

Imag returns the imaginary part of z.

func Norm

func Norm(z complex128) float64

Norm returns the complex norm of z.

func Real

func Real(z complex128) float64

Real returns the real part of z.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL