// Copyright 2014 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// +build ignore

package main

/*
This program generates table.go. Invoke it as:
go run gen.go -output table.go
*/

import (
	"bytes"
	"flag"
	"fmt"
	"go/format"
	"io/ioutil"
	"log"
	"math"
)

// N is the number of entries in the sin look-up table. It must be a power of 2.
const N = 4096

var filename = flag.String("output", "table.go", "output file name")

func main() {
	b := new(bytes.Buffer)
	fmt.Fprintf(b, "// Code generated by go run gen.go; DO NOT EDIT\n\npackage f32\n\n")
	fmt.Fprintf(b, "const sinTableLen = %d\n\n", N)
	fmt.Fprintf(b, "// sinTable[i] equals sin(i * π / sinTableLen).\n")
	fmt.Fprintf(b, "var sinTable = [sinTableLen]float32{\n")
	for i := 0; i < N; i++ {
		radians := float64(i) * (math.Pi / N)
		fmt.Fprintf(b, "%v,\n", float32(math.Sin(radians)))
	}
	fmt.Fprintf(b, "}\n")

	data, err := format.Source(b.Bytes())
	if err != nil {
		log.Fatal(err)
	}
	if err := ioutil.WriteFile(*filename, data, 0644); err != nil {
		log.Fatal(err)
	}
}
