Documentation ¶
Overview ¶
Package addchain is derived from github.com/mmcloughlin/addchain internal packages or examples
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Functions = []*Function{ { Name: "add_", Description: "If the input operation is an `ir.Add` then return it, otherwise return `nil`", Func: func(op ir.Op) ir.Op { if a, ok := op.(ir.Add); ok { return a } return nil }, }, { Name: "double_", Description: "If the input operation is an `ir.Double` then return it, otherwise return `nil`", Func: func(op ir.Op) ir.Op { if d, ok := op.(ir.Double); ok { return d } return nil }, }, { Name: "shift_", Description: "If the input operation is an `ir.Shift` then return it, otherwise return `nil`", Func: func(op ir.Op) ir.Op { if s, ok := op.(ir.Shift); ok { return s } return nil }, }, { Name: "inc_", Description: "Increment an integer", Func: func(n int) int { return n + 1 }, }, { Name: "format_", Description: "Formats an addition chain script (`*ast.Chain`) as a string", Func: printer.String, }, { Name: "split_", Description: "Calls `strings.Split`", Func: strings.Split, }, { Name: "join_", Description: "Calls `strings.Join`", Func: strings.Join, }, { Name: "lines_", Description: "Split input string into lines", Func: func(s string) []string { var lines []string scanner := bufio.NewScanner(strings.NewReader(s)) for scanner.Scan() { lines = append(lines, scanner.Text()) } return lines }, }, { Name: "ptr_", Description: "adds & if it's a value", Func: func(s *ir.Operand) string { if s.String() == "x" { return "&" } return "" }, }, { Name: "last_", Func: func(x int, a interface{}) bool { return x == reflect.ValueOf(a).Len()-1 }, }, }
Functions is the list of functions provided to templates.
Functions ¶
This section is empty.
Types ¶
type AddChainData ¶
type AddChainData struct { // Chain is the addition chain as a list of integers. Chain addchain.Chain // Ops is the complete sequence of addition operations required to compute // the addition chain. Ops addchain.Program // Script is the condensed representation of the addition chain computation // in the "addition chain calculator" language. Script *ast.Chain // Program is the intermediate representation of the addition chain // computation. This representation is likely the most convenient for code // generation. It contains a sequence of add, double and shift (repeated // doubling) instructions required to compute the chain. Temporary variable // allocation has been performed and the list of required temporaries // populated. Program *ir.Program // Metadata about the addchain project and the specific release parameters. // Please use this to include a reference or citation back to the addchain // project in your generated output. Meta *meta.Properties N string // base 16 value of the value }
Data provided to templates.
func GetAddChain ¶
func GetAddChain(n *big.Int) *AddChainData
GetAddChain retunrs template data of a short addition chain for given big.Int
Click to show internal directories.
Click to hide internal directories.