From af5af041018cd0c8b89fde3f8684fe00290b386d Mon Sep 17 00:00:00 2001
From: Jan Chaloupka <jchaloup@redhat.com>
Date: Wed, 30 Sep 2015 09:57:57 +0200
Subject: [PATCH] internal to inteernal
---
.../src/github.com/gonum/blas/native/dgemm.go | 2 +-
.../github.com/gonum/blas/native/level1double.go | 2 +-
.../gonum/blas/native/level1double_ddot.go | 2 +-
.../github.com/gonum/blas/native/level1single.go | 2 +-
.../gonum/blas/native/level1single_dsdot.go | 2 +-
.../gonum/blas/native/level1single_sdot.go | 2 +-
.../gonum/blas/native/level1single_sdsdot.go | 2 +-
.../github.com/gonum/blas/native/level2double.go | 2 +-
.../github.com/gonum/blas/native/level2single.go | 2 +-
.../github.com/gonum/blas/native/level3double.go | 2 +-
.../github.com/gonum/blas/native/level3single.go | 2 +-
.../src/github.com/gonum/blas/native/sgemm.go | 2 +-
.../src/github.com/gonum/graph/inteernal/linear.go | 73 ++++
.../src/github.com/gonum/graph/inteernal/set.go | 211 +++++++++++
.../github.com/gonum/graph/inteernal/set_test.go | 413 +++++++++++++++++++++
.../src/github.com/gonum/graph/inteernal/sort.go | 28 ++
.../src/github.com/gonum/graph/internal/linear.go | 73 ----
.../src/github.com/gonum/graph/internal/set.go | 211 -----------
.../github.com/gonum/graph/internal/set_test.go | 413 ---------------------
.../src/github.com/gonum/graph/internal/sort.go | 28 --
.../github.com/gonum/graph/network/betweenness.go | 2 +-
.../src/github.com/gonum/graph/path/a_star.go | 2 +-
.../github.com/gonum/graph/path/control_flow.go | 2 +-
.../github.com/gonum/graph/path/dijkstra_test.go | 2 +-
.../gonum/graph/path/floydwarshall_test.go | 2 +-
.../gonum/graph/path/johnson_apsp_test.go | 2 +-
.../github.com/gonum/graph/path/spanning_tree.go | 2 +-
.../github.com/gonum/graph/topo/bron_kerbosch.go | 2 +-
.../gonum/graph/topo/bron_kerbosch_test.go | 2 +-
.../github.com/gonum/graph/topo/johnson_cycles.go | 2 +-
.../gonum/graph/topo/johnson_cycles_test.go | 2 +-
.../src/github.com/gonum/graph/topo/tarjan.go | 2 +-
.../src/github.com/gonum/graph/topo/tarjan_test.go | 2 +-
.../src/github.com/gonum/graph/topo/topo_test.go | 2 +-
.../github.com/gonum/graph/traverse/traverse.go | 2 +-
.../gonum/graph/traverse/traverse_test.go | 2 +-
.../src/github.com/gonum/inteernal/asm/caxpy.go | 22 ++
.../src/github.com/gonum/inteernal/asm/cdotc.go | 23 ++
.../src/github.com/gonum/inteernal/asm/cdotu.go | 23 ++
.../src/github.com/gonum/inteernal/asm/complex | 58 +++
.../src/github.com/gonum/inteernal/asm/conj.go | 7 +
.../src/github.com/gonum/inteernal/asm/daxpy.go | 22 ++
.../github.com/gonum/inteernal/asm/daxpy_amd64.go | 12 +
.../github.com/gonum/inteernal/asm/daxpy_amd64.s | 140 +++++++
.../src/github.com/gonum/inteernal/asm/ddot.go | 23 ++
.../github.com/gonum/inteernal/asm/ddot_amd64.go | 10 +
.../github.com/gonum/inteernal/asm/ddot_amd64.s | 140 +++++++
.../src/github.com/gonum/inteernal/asm/dsdot.go | 23 ++
.../src/github.com/gonum/inteernal/asm/generate.go | 8 +
.../src/github.com/gonum/inteernal/asm/saxpy.go | 22 ++
.../src/github.com/gonum/inteernal/asm/sdot.go | 23 ++
.../gonum/inteernal/asm/single_precision | 30 ++
.../src/github.com/gonum/inteernal/asm/zaxpy.go | 22 ++
.../src/github.com/gonum/inteernal/asm/zdotc.go | 25 ++
.../src/github.com/gonum/inteernal/asm/zdotu.go | 23 ++
.../src/github.com/gonum/internal/asm/caxpy.go | 22 --
.../src/github.com/gonum/internal/asm/cdotc.go | 23 --
.../src/github.com/gonum/internal/asm/cdotu.go | 23 --
.../src/github.com/gonum/internal/asm/complex | 58 ---
.../src/github.com/gonum/internal/asm/conj.go | 7 -
.../src/github.com/gonum/internal/asm/daxpy.go | 22 --
.../github.com/gonum/internal/asm/daxpy_amd64.go | 12 -
.../github.com/gonum/internal/asm/daxpy_amd64.s | 140 -------
.../src/github.com/gonum/internal/asm/ddot.go | 23 --
.../github.com/gonum/internal/asm/ddot_amd64.go | 10 -
.../src/github.com/gonum/internal/asm/ddot_amd64.s | 140 -------
.../src/github.com/gonum/internal/asm/dsdot.go | 23 --
.../src/github.com/gonum/internal/asm/generate.go | 8 -
.../src/github.com/gonum/internal/asm/saxpy.go | 22 --
.../src/github.com/gonum/internal/asm/sdot.go | 23 --
.../github.com/gonum/internal/asm/single_precision | 30 --
.../src/github.com/gonum/internal/asm/zaxpy.go | 22 --
.../src/github.com/gonum/internal/asm/zdotc.go | 25 --
.../src/github.com/gonum/internal/asm/zdotu.go | 23 --
.../src/github.com/gonum/matrix/mat64/inner.go | 2 +-
pkg/cmd/cli/describe/chaindescriber.go | 2 +-
76 files changed, 1411 insertions(+), 1411 deletions(-)
create mode 100644 Godeps/_workspace/src/github.com/gonum/graph/inteernal/linear.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/graph/inteernal/set.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/graph/inteernal/set_test.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/graph/inteernal/sort.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/graph/internal/linear.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/graph/internal/set.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/graph/internal/set_test.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/graph/internal/sort.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/caxpy.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotc.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotu.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/complex
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/conj.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.s
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.s
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/dsdot.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/generate.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/saxpy.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/sdot.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/single_precision
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/zaxpy.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotc.go
create mode 100644 Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotu.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/caxpy.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/cdotc.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/cdotu.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/complex
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/conj.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.s
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/ddot.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.s
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/dsdot.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/generate.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/saxpy.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/sdot.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/single_precision
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/zaxpy.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/zdotc.go
delete mode 100644 Godeps/_workspace/src/github.com/gonum/internal/asm/zdotu.go
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/dgemm.go b/Godeps/_workspace/src/github.com/gonum/blas/native/dgemm.go
index 850f62c..8dc9920 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/dgemm.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/dgemm.go
@@ -10,7 +10,7 @@ import (
"sync"
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Dgemm computes
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level1double.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level1double.go
index 0d77243..65f2972 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level1double.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level1double.go
@@ -8,7 +8,7 @@ import (
"math"
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
var _ blas.Float64Level1 = Implementation{}
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level1double_ddot.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level1double_ddot.go
index 7af4e04..84a16ed 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level1double_ddot.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level1double_ddot.go
@@ -5,7 +5,7 @@
package native
import (
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Ddot computes the dot product of the two vectors
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single.go
index 6bcba83..ca82629 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single.go
@@ -10,7 +10,7 @@ import (
math "github.com/gonum/blas/native/internal/math32"
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
var _ blas.Float32Level1 = Implementation{}
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_dsdot.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_dsdot.go
index 4665a01..a438155 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_dsdot.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_dsdot.go
@@ -7,7 +7,7 @@
package native
import (
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Dsdot computes the dot product of the two vectors
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdot.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdot.go
index 1e5b565..7d96b74 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdot.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdot.go
@@ -7,7 +7,7 @@
package native
import (
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Sdot computes the dot product of the two vectors
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdsdot.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdsdot.go
index d58be3d..79543d4 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdsdot.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level1single_sdsdot.go
@@ -7,7 +7,7 @@
package native
import (
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Sdsdot computes the dot product of the two vectors plus a constant
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level2double.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level2double.go
index 6d59559..af62cd1 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level2double.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level2double.go
@@ -6,7 +6,7 @@ package native
import (
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
var _ blas.Float64Level2 = Implementation{}
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level2single.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level2single.go
index b213ad6..6720c0e 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level2single.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level2single.go
@@ -8,7 +8,7 @@ package native
import (
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
var _ blas.Float32Level2 = Implementation{}
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level3double.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level3double.go
index 5a19652..47d5d15 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level3double.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level3double.go
@@ -6,7 +6,7 @@ package native
import (
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
var _ blas.Float64Level3 = Implementation{}
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/level3single.go b/Godeps/_workspace/src/github.com/gonum/blas/native/level3single.go
index 6bc9a56..82212a0 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/level3single.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/level3single.go
@@ -8,7 +8,7 @@ package native
import (
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
var _ blas.Float32Level3 = Implementation{}
diff --git a/Godeps/_workspace/src/github.com/gonum/blas/native/sgemm.go b/Godeps/_workspace/src/github.com/gonum/blas/native/sgemm.go
index 047d4e5..0387945 100644
--- a/Godeps/_workspace/src/github.com/gonum/blas/native/sgemm.go
+++ b/Godeps/_workspace/src/github.com/gonum/blas/native/sgemm.go
@@ -12,7 +12,7 @@ import (
"sync"
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Sgemm computes
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/inteernal/linear.go b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/linear.go
new file mode 100644
index 0000000..3d64de9
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/linear.go
@@ -0,0 +1,73 @@
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+import (
+ "github.com/gonum/graph"
+)
+
+// NodeStack implements a LIFO stack of graph.Node.
+type NodeStack []graph.Node
+
+// Len returns the number of graph.Nodes on the stack.
+func (s *NodeStack) Len() int { return len(*s) }
+
+// Pop returns the last graph.Node on the stack and removes it
+// from the stack.
+func (s *NodeStack) Pop() graph.Node {
+ v := *s
+ v, n := v[:len(v)-1], v[len(v)-1]
+ *s = v
+ return n
+}
+
+// Push adds the node n to the stack at the last position.
+func (s *NodeStack) Push(n graph.Node) { *s = append(*s, n) }
+
+// NodeQueue implements a FIFO queue.
+type NodeQueue struct {
+ head int
+ data []graph.Node
+}
+
+// Len returns the number of graph.Nodes in the queue.
+func (q *NodeQueue) Len() int { return len(q.data) - q.head }
+
+// Enqueue adds the node n to the back of the queue.
+func (q *NodeQueue) Enqueue(n graph.Node) {
+ if len(q.data) == cap(q.data) && q.head > 0 {
+ l := q.Len()
+ copy(q.data, q.data[q.head:])
+ q.head = 0
+ q.data = append(q.data[:l], n)
+ } else {
+ q.data = append(q.data, n)
+ }
+}
+
+// Dequeue returns the graph.Node at the front of the queue and
+// removes it from the queue.
+func (q *NodeQueue) Dequeue() graph.Node {
+ if q.Len() == 0 {
+ panic("queue: empty queue")
+ }
+
+ var n graph.Node
+ n, q.data[q.head] = q.data[q.head], nil
+ q.head++
+
+ if q.Len() == 0 {
+ q.head = 0
+ q.data = q.data[:0]
+ }
+
+ return n
+}
+
+// Reset clears the queue for reuse.
+func (q *NodeQueue) Reset() {
+ q.head = 0
+ q.data = q.data[:0]
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/inteernal/set.go b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/set.go
new file mode 100644
index 0000000..3ad1bc8
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/set.go
@@ -0,0 +1,211 @@
+// Copyright ©2014 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+import (
+ "unsafe"
+
+ "github.com/gonum/graph"
+)
+
+// IntSet is a set of integer identifiers.
+type IntSet map[int]struct{}
+
+// The simple accessor methods for Set are provided to allow ease of
+// implementation change should the need arise.
+
+// Add inserts an element into the set.
+func (s IntSet) Add(e int) {
+ s[e] = struct{}{}
+}
+
+// Has reports the existence of the element in the set.
+func (s IntSet) Has(e int) bool {
+ _, ok := s[e]
+ return ok
+}
+
+// Remove deletes the specified element from the set.
+func (s IntSet) Remove(e int) {
+ delete(s, e)
+}
+
+// Count reports the number of elements stored in the set.
+func (s IntSet) Count() int {
+ return len(s)
+}
+
+// Same determines whether two sets are backed by the same store. In the
+// current implementation using hash maps it makes use of the fact that
+// hash maps (at least in the gc implementation) are passed as a pointer
+// to a runtime Hmap struct.
+//
+// A map is not seen by the runtime as a pointer though, so we cannot
+// directly compare the sets converted to unsafe.Pointer and need to take
+// the sets' addressed and dereference them as pointers to some comparable
+// type.
+func Same(s1, s2 Set) bool {
+ return *(*uintptr)(unsafe.Pointer(&s1)) == *(*uintptr)(unsafe.Pointer(&s2))
+}
+
+// A set is a set of nodes keyed in their integer identifiers.
+type Set map[int]graph.Node
+
+// The simple accessor methods for Set are provided to allow ease of
+// implementation change should the need arise.
+
+// Add inserts an element into the set.
+func (s Set) Add(n graph.Node) {
+ s[n.ID()] = n
+}
+
+// Remove deletes the specified element from the set.
+func (s Set) Remove(e graph.Node) {
+ delete(s, e.ID())
+}
+
+// Has reports the existence of the element in the set.
+func (s Set) Has(n graph.Node) bool {
+ _, ok := s[n.ID()]
+ return ok
+}
+
+// Clear returns an empty set, possibly using the same backing store.
+// Clear is not provided as a method since there is no way to replace
+// the calling value if clearing is performed by a make(set). Clear
+// should never be called without keeping the returned value.
+func Clear(s Set) Set {
+ if len(s) == 0 {
+ return s
+ }
+
+ return make(Set)
+}
+
+// Copy performs a perfect copy from s1 to dst (meaning the sets will
+// be equal).
+func (dst Set) Copy(src Set) Set {
+ if Same(src, dst) {
+ return dst
+ }
+
+ if len(dst) > 0 {
+ dst = make(Set, len(src))
+ }
+
+ for e, n := range src {
+ dst[e] = n
+ }
+
+ return dst
+}
+
+// Equal reports set equality between the parameters. Sets are equal if
+// and only if they have the same elements.
+func Equal(s1, s2 Set) bool {
+ if Same(s1, s2) {
+ return true
+ }
+
+ if len(s1) != len(s2) {
+ return false
+ }
+
+ for e := range s1 {
+ if _, ok := s2[e]; !ok {
+ return false
+ }
+ }
+
+ return true
+}
+
+// Union takes the union of s1 and s2, and stores it in dst.
+//
+// The union of two sets, s1 and s2, is the set containing all the
+// elements of each, for instance:
+//
+// {a,b,c} UNION {d,e,f} = {a,b,c,d,e,f}
+//
+// Since sets may not have repetition, unions of two sets that overlap
+// do not contain repeat elements, that is:
+//
+// {a,b,c} UNION {b,c,d} = {a,b,c,d}
+//
+func (dst Set) Union(s1, s2 Set) Set {
+ if Same(s1, s2) {
+ return dst.Copy(s1)
+ }
+
+ if !Same(s1, dst) && !Same(s2, dst) {
+ dst = Clear(dst)
+ }
+
+ if !Same(dst, s1) {
+ for e, n := range s1 {
+ dst[e] = n
+ }
+ }
+
+ if !Same(dst, s2) {
+ for e, n := range s2 {
+ dst[e] = n
+ }
+ }
+
+ return dst
+}
+
+// Intersect takes the intersection of s1 and s2, and stores it in dst.
+//
+// The intersection of two sets, s1 and s2, is the set containing all
+// the elements shared between the two sets, for instance:
+//
+// {a,b,c} INTERSECT {b,c,d} = {b,c}
+//
+// The intersection between a set and itself is itself, and thus
+// effectively a copy operation:
+//
+// {a,b,c} INTERSECT {a,b,c} = {a,b,c}
+//
+// The intersection between two sets that share no elements is the empty
+// set:
+//
+// {a,b,c} INTERSECT {d,e,f} = {}
+//
+func (dst Set) Intersect(s1, s2 Set) Set {
+ var swap Set
+
+ if Same(s1, s2) {
+ return dst.Copy(s1)
+ }
+ if Same(s1, dst) {
+ swap = s2
+ } else if Same(s2, dst) {
+ swap = s1
+ } else {
+ dst = Clear(dst)
+
+ if len(s1) > len(s2) {
+ s1, s2 = s2, s1
+ }
+
+ for e, n := range s1 {
+ if _, ok := s2[e]; ok {
+ dst[e] = n
+ }
+ }
+
+ return dst
+ }
+
+ for e := range dst {
+ if _, ok := swap[e]; !ok {
+ delete(dst, e)
+ }
+ }
+
+ return dst
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/inteernal/set_test.go b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/set_test.go
new file mode 100644
index 0000000..fb39620
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/set_test.go
@@ -0,0 +1,413 @@
+// Copyright ©2014 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+import "testing"
+
+type node int
+
+func (n node) ID() int { return int(n) }
+
+// count reports the number of elements stored in the set.
+func (s Set) count() int {
+ return len(s)
+}
+
+// TestSame tests the assumption that pointer equality via unsafe conversion
+// of a map[int]struct{} to uintptr is a valid test for perfect identity between
+// set values. If any of the tests in TestSame fail, the package is broken and same
+// must be reimplemented to conform to the runtime map implementation. The relevant
+// code to look at (at least for gc) is in runtime/hashmap.{h,goc}.
+func TestSame(t *testing.T) {
+ var (
+ a = make(Set)
+ b = make(Set)
+ c = a
+ )
+
+ if Same(a, b) {
+ t.Error("Independently created sets test as same")
+ }
+ if !Same(a, c) {
+ t.Error("Set copy and original test as not same.")
+ }
+ a.Add(node(1))
+ if !Same(a, c) {
+ t.Error("Set copy and original test as not same after addition.")
+ }
+ if !Same(nil, nil) {
+ t.Error("nil sets test as not same.")
+ }
+ if Same(b, nil) {
+ t.Error("nil and empty sets test as same.")
+ }
+}
+
+func TestAdd(t *testing.T) {
+ s := make(Set)
+ if s == nil {
+ t.Fatal("Set cannot be created successfully")
+ }
+
+ if s.count() != 0 {
+ t.Error("Set somehow contains new elements upon creation")
+ }
+
+ s.Add(node(1))
+ s.Add(node(3))
+ s.Add(node(5))
+
+ if s.count() != 3 {
+ t.Error("Incorrect number of set elements after adding")
+ }
+
+ if !s.Has(node(1)) || !s.Has(node(3)) || !s.Has(node(5)) {
+ t.Error("Set doesn't contain element that was added")
+ }
+
+ s.Add(node(1))
+
+ if s.count() > 3 {
+ t.Error("Set double-adds element (element not unique)")
+ } else if s.count() < 3 {
+ t.Error("Set double-add lowered len")
+ }
+
+ if !s.Has(node(1)) {
+ t.Error("Set doesn't contain double-added element")
+ }
+
+ if !s.Has(node(3)) || !s.Has(node(5)) {
+ t.Error("Set removes element on double-add")
+ }
+
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key: %d != %d", e, n.ID())
+ }
+ }
+}
+
+func TestRemove(t *testing.T) {
+ s := make(Set)
+
+ s.Add(node(1))
+ s.Add(node(3))
+ s.Add(node(5))
+
+ s.Remove(node(1))
+
+ if s.count() != 2 {
+ t.Error("Incorrect number of set elements after removing an element")
+ }
+
+ if s.Has(node(1)) {
+ t.Error("Element present after removal")
+ }
+
+ if !s.Has(node(3)) || !s.Has(node(5)) {
+ t.Error("Set remove removed wrong element")
+ }
+
+ s.Remove(node(1))
+
+ if s.count() != 2 || s.Has(node(1)) {
+ t.Error("Double set remove does something strange")
+ }
+
+ s.Add(node(1))
+
+ if s.count() != 3 || !s.Has(node(1)) {
+ t.Error("Cannot add element after removal")
+ }
+}
+
+func TestClear(t *testing.T) {
+ s := make(Set)
+
+ s.Add(node(8))
+ s.Add(node(9))
+ s.Add(node(10))
+
+ s = Clear(s)
+
+ if s.count() != 0 {
+ t.Error("Clear did not properly reset set to size 0")
+ }
+}
+
+func TestSelfEqual(t *testing.T) {
+ s := make(Set)
+
+ if !Equal(s, s) {
+ t.Error("Set is not equal to itself")
+ }
+
+ s.Add(node(1))
+
+ if !Equal(s, s) {
+ t.Error("Set ceases self equality after adding element")
+ }
+}
+
+func TestEqual(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+
+ if !Equal(s1, s2) {
+ t.Error("Two different empty sets not equal")
+ }
+
+ s1.Add(node(1))
+ if Equal(s1, s2) {
+ t.Error("Two different sets with different elements not equal")
+ }
+
+ s2.Add(node(1))
+ if !Equal(s1, s2) {
+ t.Error("Two sets with same element not equal")
+ }
+}
+
+func TestCopy(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+
+ s1.Add(node(1))
+ s1.Add(node(2))
+ s1.Add(node(3))
+
+ s2.Copy(s1)
+
+ if !Equal(s1, s2) {
+ t.Fatalf("Two sets not equal after copy")
+ }
+
+ s2.Remove(node(1))
+
+ if Equal(s1, s2) {
+ t.Errorf("Mutating one set mutated another after copy")
+ }
+}
+
+func TestSelfCopy(t *testing.T) {
+ s1 := make(Set)
+
+ s1.Add(node(1))
+ s1.Add(node(2))
+
+ s1.Copy(s1)
+
+ if s1.count() != 2 {
+ t.Error("Something strange happened when copying into self")
+ }
+}
+
+func TestUnionSame(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+ s3 := make(Set)
+
+ s1.Add(node(1))
+ s1.Add(node(2))
+
+ s2.Add(node(1))
+ s2.Add(node(2))
+
+ s3.Union(s1, s2)
+
+ if s3.count() != 2 {
+ t.Error("Union of same sets yields set with wrong len")
+ }
+
+ if !s3.Has(node(1)) || !s3.Has(node(2)) {
+ t.Error("Union of same sets yields wrong elements")
+ }
+
+ for i, s := range []Set{s1, s2, s3} {
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
+ }
+ }
+ }
+}
+
+func TestUnionDiff(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+ s3 := make(Set)
+
+ s1.Add(node(1))
+ s1.Add(node(2))
+
+ s2.Add(node(3))
+
+ s3.Union(s1, s2)
+
+ if s3.count() != 3 {
+ t.Error("Union of different sets yields set with wrong len")
+ }
+
+ if !s3.Has(node(1)) || !s3.Has(node(2)) || !s3.Has(node(3)) {
+ t.Error("Union of different sets yields set with wrong elements")
+ }
+
+ if s1.Has(node(3)) || !s1.Has(node(2)) || !s1.Has(node(1)) || s1.count() != 2 {
+ t.Error("Union of sets mutates non-destination set (argument 1)")
+ }
+
+ if !s2.Has(node(3)) || s2.Has(node(1)) || s2.Has(node(2)) || s2.count() != 1 {
+ t.Error("Union of sets mutates non-destination set (argument 2)")
+ }
+
+ for i, s := range []Set{s1, s2, s3} {
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
+ }
+ }
+ }
+}
+
+func TestUnionOverlapping(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+ s3 := make(Set)
+
+ s1.Add(node(1))
+ s1.Add(node(2))
+
+ s2.Add(node(2))
+ s2.Add(node(3))
+
+ s3.Union(s1, s2)
+
+ if s3.count() != 3 {
+ t.Error("Union of overlapping sets yields set with wrong len")
+ }
+
+ if !s3.Has(node(1)) || !s3.Has(node(2)) || !s3.Has(node(3)) {
+ t.Error("Union of overlapping sets yields set with wrong elements")
+ }
+
+ if s1.Has(node(3)) || !s1.Has(node(2)) || !s1.Has(node(1)) || s1.count() != 2 {
+ t.Error("Union of sets mutates non-destination set (argument 1)")
+ }
+
+ if !s2.Has(node(3)) || s2.Has(node(1)) || !s2.Has(node(2)) || s2.count() != 2 {
+ t.Error("Union of sets mutates non-destination set (argument 2)")
+ }
+
+ for i, s := range []Set{s1, s2, s3} {
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
+ }
+ }
+ }
+}
+
+func TestIntersectSame(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+ s3 := make(Set)
+
+ s1.Add(node(2))
+ s1.Add(node(3))
+
+ s2.Add(node(2))
+ s2.Add(node(3))
+
+ s3.Intersect(s1, s2)
+
+ if card := s3.count(); card != 2 {
+ t.Errorf("Intersection of identical sets yields set of wrong len %d", card)
+ }
+
+ if !s3.Has(node(2)) || !s3.Has(node(3)) {
+ t.Error("Intersection of identical sets yields set of wrong elements")
+ }
+
+ for i, s := range []Set{s1, s2, s3} {
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
+ }
+ }
+ }
+}
+
+func TestIntersectDiff(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+ s3 := make(Set)
+
+ s1.Add(node(2))
+ s1.Add(node(3))
+
+ s2.Add(node(1))
+ s2.Add(node(4))
+
+ s3.Intersect(s1, s2)
+
+ if card := s3.count(); card != 0 {
+ t.Errorf("Intersection of different yields non-empty set %d", card)
+ }
+
+ if !s1.Has(node(2)) || !s1.Has(node(3)) || s1.Has(node(1)) || s1.Has(node(4)) || s1.count() != 2 {
+ t.Error("Intersection of sets mutates non-destination set (argument 1)")
+ }
+
+ if s2.Has(node(2)) || s2.Has(node(3)) || !s2.Has(node(1)) || !s2.Has(node(4)) || s2.count() != 2 {
+ t.Error("Intersection of sets mutates non-destination set (argument 1)")
+ }
+
+ for i, s := range []Set{s1, s2, s3} {
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
+ }
+ }
+ }
+}
+
+func TestIntersectOverlapping(t *testing.T) {
+ s1 := make(Set)
+ s2 := make(Set)
+ s3 := make(Set)
+
+ s1.Add(node(2))
+ s1.Add(node(3))
+
+ s2.Add(node(3))
+ s2.Add(node(4))
+
+ s3.Intersect(s1, s2)
+
+ if card := s3.count(); card != 1 {
+ t.Errorf("Intersection of overlapping sets yields set of incorrect len %d", card)
+ }
+
+ if !s3.Has(node(3)) {
+ t.Errorf("Intersection of overlapping sets yields set with wrong element")
+ }
+
+ if !s1.Has(node(2)) || !s1.Has(node(3)) || s1.Has(node(4)) || s1.count() != 2 {
+ t.Error("Intersection of sets mutates non-destination set (argument 1)")
+ }
+
+ if s2.Has(node(2)) || !s2.Has(node(3)) || !s2.Has(node(4)) || s2.count() != 2 {
+ t.Error("Intersection of sets mutates non-destination set (argument 1)")
+ }
+
+ for i, s := range []Set{s1, s2, s3} {
+ for e, n := range s {
+ if e != n.ID() {
+ t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
+ }
+ }
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/inteernal/sort.go b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/sort.go
new file mode 100644
index 0000000..3bfee0f
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/graph/inteernal/sort.go
@@ -0,0 +1,28 @@
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package internal
+
+// BySliceValues implements the sort.Interface sorting a slice of
+// []int lexically by the values of the []int.
+type BySliceValues [][]int
+
+func (c BySliceValues) Len() int { return len(c) }
+func (c BySliceValues) Less(i, j int) bool {
+ a, b := c[i], c[j]
+ l := len(a)
+ if len(b) < l {
+ l = len(b)
+ }
+ for k, v := range a[:l] {
+ if v < b[k] {
+ return true
+ }
+ if v > b[k] {
+ return false
+ }
+ }
+ return len(a) < len(b)
+}
+func (c BySliceValues) Swap(i, j int) { c[i], c[j] = c[j], c[i] }
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/internal/linear.go b/Godeps/_workspace/src/github.com/gonum/graph/internal/linear.go
deleted file mode 100644
index 3d64de9..0000000
--- a/Godeps/_workspace/src/github.com/gonum/graph/internal/linear.go
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal
-
-import (
- "github.com/gonum/graph"
-)
-
-// NodeStack implements a LIFO stack of graph.Node.
-type NodeStack []graph.Node
-
-// Len returns the number of graph.Nodes on the stack.
-func (s *NodeStack) Len() int { return len(*s) }
-
-// Pop returns the last graph.Node on the stack and removes it
-// from the stack.
-func (s *NodeStack) Pop() graph.Node {
- v := *s
- v, n := v[:len(v)-1], v[len(v)-1]
- *s = v
- return n
-}
-
-// Push adds the node n to the stack at the last position.
-func (s *NodeStack) Push(n graph.Node) { *s = append(*s, n) }
-
-// NodeQueue implements a FIFO queue.
-type NodeQueue struct {
- head int
- data []graph.Node
-}
-
-// Len returns the number of graph.Nodes in the queue.
-func (q *NodeQueue) Len() int { return len(q.data) - q.head }
-
-// Enqueue adds the node n to the back of the queue.
-func (q *NodeQueue) Enqueue(n graph.Node) {
- if len(q.data) == cap(q.data) && q.head > 0 {
- l := q.Len()
- copy(q.data, q.data[q.head:])
- q.head = 0
- q.data = append(q.data[:l], n)
- } else {
- q.data = append(q.data, n)
- }
-}
-
-// Dequeue returns the graph.Node at the front of the queue and
-// removes it from the queue.
-func (q *NodeQueue) Dequeue() graph.Node {
- if q.Len() == 0 {
- panic("queue: empty queue")
- }
-
- var n graph.Node
- n, q.data[q.head] = q.data[q.head], nil
- q.head++
-
- if q.Len() == 0 {
- q.head = 0
- q.data = q.data[:0]
- }
-
- return n
-}
-
-// Reset clears the queue for reuse.
-func (q *NodeQueue) Reset() {
- q.head = 0
- q.data = q.data[:0]
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/internal/set.go b/Godeps/_workspace/src/github.com/gonum/graph/internal/set.go
deleted file mode 100644
index 3ad1bc8..0000000
--- a/Godeps/_workspace/src/github.com/gonum/graph/internal/set.go
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright ©2014 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal
-
-import (
- "unsafe"
-
- "github.com/gonum/graph"
-)
-
-// IntSet is a set of integer identifiers.
-type IntSet map[int]struct{}
-
-// The simple accessor methods for Set are provided to allow ease of
-// implementation change should the need arise.
-
-// Add inserts an element into the set.
-func (s IntSet) Add(e int) {
- s[e] = struct{}{}
-}
-
-// Has reports the existence of the element in the set.
-func (s IntSet) Has(e int) bool {
- _, ok := s[e]
- return ok
-}
-
-// Remove deletes the specified element from the set.
-func (s IntSet) Remove(e int) {
- delete(s, e)
-}
-
-// Count reports the number of elements stored in the set.
-func (s IntSet) Count() int {
- return len(s)
-}
-
-// Same determines whether two sets are backed by the same store. In the
-// current implementation using hash maps it makes use of the fact that
-// hash maps (at least in the gc implementation) are passed as a pointer
-// to a runtime Hmap struct.
-//
-// A map is not seen by the runtime as a pointer though, so we cannot
-// directly compare the sets converted to unsafe.Pointer and need to take
-// the sets' addressed and dereference them as pointers to some comparable
-// type.
-func Same(s1, s2 Set) bool {
- return *(*uintptr)(unsafe.Pointer(&s1)) == *(*uintptr)(unsafe.Pointer(&s2))
-}
-
-// A set is a set of nodes keyed in their integer identifiers.
-type Set map[int]graph.Node
-
-// The simple accessor methods for Set are provided to allow ease of
-// implementation change should the need arise.
-
-// Add inserts an element into the set.
-func (s Set) Add(n graph.Node) {
- s[n.ID()] = n
-}
-
-// Remove deletes the specified element from the set.
-func (s Set) Remove(e graph.Node) {
- delete(s, e.ID())
-}
-
-// Has reports the existence of the element in the set.
-func (s Set) Has(n graph.Node) bool {
- _, ok := s[n.ID()]
- return ok
-}
-
-// Clear returns an empty set, possibly using the same backing store.
-// Clear is not provided as a method since there is no way to replace
-// the calling value if clearing is performed by a make(set). Clear
-// should never be called without keeping the returned value.
-func Clear(s Set) Set {
- if len(s) == 0 {
- return s
- }
-
- return make(Set)
-}
-
-// Copy performs a perfect copy from s1 to dst (meaning the sets will
-// be equal).
-func (dst Set) Copy(src Set) Set {
- if Same(src, dst) {
- return dst
- }
-
- if len(dst) > 0 {
- dst = make(Set, len(src))
- }
-
- for e, n := range src {
- dst[e] = n
- }
-
- return dst
-}
-
-// Equal reports set equality between the parameters. Sets are equal if
-// and only if they have the same elements.
-func Equal(s1, s2 Set) bool {
- if Same(s1, s2) {
- return true
- }
-
- if len(s1) != len(s2) {
- return false
- }
-
- for e := range s1 {
- if _, ok := s2[e]; !ok {
- return false
- }
- }
-
- return true
-}
-
-// Union takes the union of s1 and s2, and stores it in dst.
-//
-// The union of two sets, s1 and s2, is the set containing all the
-// elements of each, for instance:
-//
-// {a,b,c} UNION {d,e,f} = {a,b,c,d,e,f}
-//
-// Since sets may not have repetition, unions of two sets that overlap
-// do not contain repeat elements, that is:
-//
-// {a,b,c} UNION {b,c,d} = {a,b,c,d}
-//
-func (dst Set) Union(s1, s2 Set) Set {
- if Same(s1, s2) {
- return dst.Copy(s1)
- }
-
- if !Same(s1, dst) && !Same(s2, dst) {
- dst = Clear(dst)
- }
-
- if !Same(dst, s1) {
- for e, n := range s1 {
- dst[e] = n
- }
- }
-
- if !Same(dst, s2) {
- for e, n := range s2 {
- dst[e] = n
- }
- }
-
- return dst
-}
-
-// Intersect takes the intersection of s1 and s2, and stores it in dst.
-//
-// The intersection of two sets, s1 and s2, is the set containing all
-// the elements shared between the two sets, for instance:
-//
-// {a,b,c} INTERSECT {b,c,d} = {b,c}
-//
-// The intersection between a set and itself is itself, and thus
-// effectively a copy operation:
-//
-// {a,b,c} INTERSECT {a,b,c} = {a,b,c}
-//
-// The intersection between two sets that share no elements is the empty
-// set:
-//
-// {a,b,c} INTERSECT {d,e,f} = {}
-//
-func (dst Set) Intersect(s1, s2 Set) Set {
- var swap Set
-
- if Same(s1, s2) {
- return dst.Copy(s1)
- }
- if Same(s1, dst) {
- swap = s2
- } else if Same(s2, dst) {
- swap = s1
- } else {
- dst = Clear(dst)
-
- if len(s1) > len(s2) {
- s1, s2 = s2, s1
- }
-
- for e, n := range s1 {
- if _, ok := s2[e]; ok {
- dst[e] = n
- }
- }
-
- return dst
- }
-
- for e := range dst {
- if _, ok := swap[e]; !ok {
- delete(dst, e)
- }
- }
-
- return dst
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/internal/set_test.go b/Godeps/_workspace/src/github.com/gonum/graph/internal/set_test.go
deleted file mode 100644
index fb39620..0000000
--- a/Godeps/_workspace/src/github.com/gonum/graph/internal/set_test.go
+++ /dev/null
@@ -1,413 +0,0 @@
-// Copyright ©2014 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal
-
-import "testing"
-
-type node int
-
-func (n node) ID() int { return int(n) }
-
-// count reports the number of elements stored in the set.
-func (s Set) count() int {
- return len(s)
-}
-
-// TestSame tests the assumption that pointer equality via unsafe conversion
-// of a map[int]struct{} to uintptr is a valid test for perfect identity between
-// set values. If any of the tests in TestSame fail, the package is broken and same
-// must be reimplemented to conform to the runtime map implementation. The relevant
-// code to look at (at least for gc) is in runtime/hashmap.{h,goc}.
-func TestSame(t *testing.T) {
- var (
- a = make(Set)
- b = make(Set)
- c = a
- )
-
- if Same(a, b) {
- t.Error("Independently created sets test as same")
- }
- if !Same(a, c) {
- t.Error("Set copy and original test as not same.")
- }
- a.Add(node(1))
- if !Same(a, c) {
- t.Error("Set copy and original test as not same after addition.")
- }
- if !Same(nil, nil) {
- t.Error("nil sets test as not same.")
- }
- if Same(b, nil) {
- t.Error("nil and empty sets test as same.")
- }
-}
-
-func TestAdd(t *testing.T) {
- s := make(Set)
- if s == nil {
- t.Fatal("Set cannot be created successfully")
- }
-
- if s.count() != 0 {
- t.Error("Set somehow contains new elements upon creation")
- }
-
- s.Add(node(1))
- s.Add(node(3))
- s.Add(node(5))
-
- if s.count() != 3 {
- t.Error("Incorrect number of set elements after adding")
- }
-
- if !s.Has(node(1)) || !s.Has(node(3)) || !s.Has(node(5)) {
- t.Error("Set doesn't contain element that was added")
- }
-
- s.Add(node(1))
-
- if s.count() > 3 {
- t.Error("Set double-adds element (element not unique)")
- } else if s.count() < 3 {
- t.Error("Set double-add lowered len")
- }
-
- if !s.Has(node(1)) {
- t.Error("Set doesn't contain double-added element")
- }
-
- if !s.Has(node(3)) || !s.Has(node(5)) {
- t.Error("Set removes element on double-add")
- }
-
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key: %d != %d", e, n.ID())
- }
- }
-}
-
-func TestRemove(t *testing.T) {
- s := make(Set)
-
- s.Add(node(1))
- s.Add(node(3))
- s.Add(node(5))
-
- s.Remove(node(1))
-
- if s.count() != 2 {
- t.Error("Incorrect number of set elements after removing an element")
- }
-
- if s.Has(node(1)) {
- t.Error("Element present after removal")
- }
-
- if !s.Has(node(3)) || !s.Has(node(5)) {
- t.Error("Set remove removed wrong element")
- }
-
- s.Remove(node(1))
-
- if s.count() != 2 || s.Has(node(1)) {
- t.Error("Double set remove does something strange")
- }
-
- s.Add(node(1))
-
- if s.count() != 3 || !s.Has(node(1)) {
- t.Error("Cannot add element after removal")
- }
-}
-
-func TestClear(t *testing.T) {
- s := make(Set)
-
- s.Add(node(8))
- s.Add(node(9))
- s.Add(node(10))
-
- s = Clear(s)
-
- if s.count() != 0 {
- t.Error("Clear did not properly reset set to size 0")
- }
-}
-
-func TestSelfEqual(t *testing.T) {
- s := make(Set)
-
- if !Equal(s, s) {
- t.Error("Set is not equal to itself")
- }
-
- s.Add(node(1))
-
- if !Equal(s, s) {
- t.Error("Set ceases self equality after adding element")
- }
-}
-
-func TestEqual(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
-
- if !Equal(s1, s2) {
- t.Error("Two different empty sets not equal")
- }
-
- s1.Add(node(1))
- if Equal(s1, s2) {
- t.Error("Two different sets with different elements not equal")
- }
-
- s2.Add(node(1))
- if !Equal(s1, s2) {
- t.Error("Two sets with same element not equal")
- }
-}
-
-func TestCopy(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
-
- s1.Add(node(1))
- s1.Add(node(2))
- s1.Add(node(3))
-
- s2.Copy(s1)
-
- if !Equal(s1, s2) {
- t.Fatalf("Two sets not equal after copy")
- }
-
- s2.Remove(node(1))
-
- if Equal(s1, s2) {
- t.Errorf("Mutating one set mutated another after copy")
- }
-}
-
-func TestSelfCopy(t *testing.T) {
- s1 := make(Set)
-
- s1.Add(node(1))
- s1.Add(node(2))
-
- s1.Copy(s1)
-
- if s1.count() != 2 {
- t.Error("Something strange happened when copying into self")
- }
-}
-
-func TestUnionSame(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
- s3 := make(Set)
-
- s1.Add(node(1))
- s1.Add(node(2))
-
- s2.Add(node(1))
- s2.Add(node(2))
-
- s3.Union(s1, s2)
-
- if s3.count() != 2 {
- t.Error("Union of same sets yields set with wrong len")
- }
-
- if !s3.Has(node(1)) || !s3.Has(node(2)) {
- t.Error("Union of same sets yields wrong elements")
- }
-
- for i, s := range []Set{s1, s2, s3} {
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
- }
- }
- }
-}
-
-func TestUnionDiff(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
- s3 := make(Set)
-
- s1.Add(node(1))
- s1.Add(node(2))
-
- s2.Add(node(3))
-
- s3.Union(s1, s2)
-
- if s3.count() != 3 {
- t.Error("Union of different sets yields set with wrong len")
- }
-
- if !s3.Has(node(1)) || !s3.Has(node(2)) || !s3.Has(node(3)) {
- t.Error("Union of different sets yields set with wrong elements")
- }
-
- if s1.Has(node(3)) || !s1.Has(node(2)) || !s1.Has(node(1)) || s1.count() != 2 {
- t.Error("Union of sets mutates non-destination set (argument 1)")
- }
-
- if !s2.Has(node(3)) || s2.Has(node(1)) || s2.Has(node(2)) || s2.count() != 1 {
- t.Error("Union of sets mutates non-destination set (argument 2)")
- }
-
- for i, s := range []Set{s1, s2, s3} {
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
- }
- }
- }
-}
-
-func TestUnionOverlapping(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
- s3 := make(Set)
-
- s1.Add(node(1))
- s1.Add(node(2))
-
- s2.Add(node(2))
- s2.Add(node(3))
-
- s3.Union(s1, s2)
-
- if s3.count() != 3 {
- t.Error("Union of overlapping sets yields set with wrong len")
- }
-
- if !s3.Has(node(1)) || !s3.Has(node(2)) || !s3.Has(node(3)) {
- t.Error("Union of overlapping sets yields set with wrong elements")
- }
-
- if s1.Has(node(3)) || !s1.Has(node(2)) || !s1.Has(node(1)) || s1.count() != 2 {
- t.Error("Union of sets mutates non-destination set (argument 1)")
- }
-
- if !s2.Has(node(3)) || s2.Has(node(1)) || !s2.Has(node(2)) || s2.count() != 2 {
- t.Error("Union of sets mutates non-destination set (argument 2)")
- }
-
- for i, s := range []Set{s1, s2, s3} {
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
- }
- }
- }
-}
-
-func TestIntersectSame(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
- s3 := make(Set)
-
- s1.Add(node(2))
- s1.Add(node(3))
-
- s2.Add(node(2))
- s2.Add(node(3))
-
- s3.Intersect(s1, s2)
-
- if card := s3.count(); card != 2 {
- t.Errorf("Intersection of identical sets yields set of wrong len %d", card)
- }
-
- if !s3.Has(node(2)) || !s3.Has(node(3)) {
- t.Error("Intersection of identical sets yields set of wrong elements")
- }
-
- for i, s := range []Set{s1, s2, s3} {
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
- }
- }
- }
-}
-
-func TestIntersectDiff(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
- s3 := make(Set)
-
- s1.Add(node(2))
- s1.Add(node(3))
-
- s2.Add(node(1))
- s2.Add(node(4))
-
- s3.Intersect(s1, s2)
-
- if card := s3.count(); card != 0 {
- t.Errorf("Intersection of different yields non-empty set %d", card)
- }
-
- if !s1.Has(node(2)) || !s1.Has(node(3)) || s1.Has(node(1)) || s1.Has(node(4)) || s1.count() != 2 {
- t.Error("Intersection of sets mutates non-destination set (argument 1)")
- }
-
- if s2.Has(node(2)) || s2.Has(node(3)) || !s2.Has(node(1)) || !s2.Has(node(4)) || s2.count() != 2 {
- t.Error("Intersection of sets mutates non-destination set (argument 1)")
- }
-
- for i, s := range []Set{s1, s2, s3} {
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
- }
- }
- }
-}
-
-func TestIntersectOverlapping(t *testing.T) {
- s1 := make(Set)
- s2 := make(Set)
- s3 := make(Set)
-
- s1.Add(node(2))
- s1.Add(node(3))
-
- s2.Add(node(3))
- s2.Add(node(4))
-
- s3.Intersect(s1, s2)
-
- if card := s3.count(); card != 1 {
- t.Errorf("Intersection of overlapping sets yields set of incorrect len %d", card)
- }
-
- if !s3.Has(node(3)) {
- t.Errorf("Intersection of overlapping sets yields set with wrong element")
- }
-
- if !s1.Has(node(2)) || !s1.Has(node(3)) || s1.Has(node(4)) || s1.count() != 2 {
- t.Error("Intersection of sets mutates non-destination set (argument 1)")
- }
-
- if s2.Has(node(2)) || !s2.Has(node(3)) || !s2.Has(node(4)) || s2.count() != 2 {
- t.Error("Intersection of sets mutates non-destination set (argument 1)")
- }
-
- for i, s := range []Set{s1, s2, s3} {
- for e, n := range s {
- if e != n.ID() {
- t.Error("Element ID did not match key in s%d: %d != %d", i+1, e, n.ID())
- }
- }
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/internal/sort.go b/Godeps/_workspace/src/github.com/gonum/graph/internal/sort.go
deleted file mode 100644
index 3bfee0f..0000000
--- a/Godeps/_workspace/src/github.com/gonum/graph/internal/sort.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal
-
-// BySliceValues implements the sort.Interface sorting a slice of
-// []int lexically by the values of the []int.
-type BySliceValues [][]int
-
-func (c BySliceValues) Len() int { return len(c) }
-func (c BySliceValues) Less(i, j int) bool {
- a, b := c[i], c[j]
- l := len(a)
- if len(b) < l {
- l = len(b)
- }
- for k, v := range a[:l] {
- if v < b[k] {
- return true
- }
- if v > b[k] {
- return false
- }
- }
- return len(a) < len(b)
-}
-func (c BySliceValues) Swap(i, j int) { c[i], c[j] = c[j], c[i] }
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/network/betweenness.go b/Godeps/_workspace/src/github.com/gonum/graph/network/betweenness.go
index ad16732..dbe216e 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/network/betweenness.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/network/betweenness.go
@@ -8,7 +8,7 @@ import (
"math"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/path"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/path/a_star.go b/Godeps/_workspace/src/github.com/gonum/graph/path/a_star.go
index b41d194..d742cff 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/path/a_star.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/path/a_star.go
@@ -8,7 +8,7 @@ import (
"container/heap"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// Heuristic returns an estimate of the cost of travelling between two nodes.
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/path/control_flow.go b/Godeps/_workspace/src/github.com/gonum/graph/path/control_flow.go
index 219226d..9bebf2c 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/path/control_flow.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/path/control_flow.go
@@ -6,7 +6,7 @@ package path
import (
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// PostDominatores returns all dominators for all nodes in g. It does not
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/path/dijkstra_test.go b/Godeps/_workspace/src/github.com/gonum/graph/path/dijkstra_test.go
index c22d28f..0526ba9 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/path/dijkstra_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/path/dijkstra_test.go
@@ -11,7 +11,7 @@ import (
"testing"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/path"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/path/floydwarshall_test.go b/Godeps/_workspace/src/github.com/gonum/graph/path/floydwarshall_test.go
index ea78e79..d23bb6a 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/path/floydwarshall_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/path/floydwarshall_test.go
@@ -11,7 +11,7 @@ import (
"testing"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/path"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/path/johnson_apsp_test.go b/Godeps/_workspace/src/github.com/gonum/graph/path/johnson_apsp_test.go
index 814000f..588581d 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/path/johnson_apsp_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/path/johnson_apsp_test.go
@@ -11,7 +11,7 @@ import (
"testing"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/path"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/path/spanning_tree.go b/Godeps/_workspace/src/github.com/gonum/graph/path/spanning_tree.go
index 99b30cb..2e3a501 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/path/spanning_tree.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/path/spanning_tree.go
@@ -9,7 +9,7 @@ import (
"github.com/gonum/graph"
"github.com/gonum/graph/concrete"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// EdgeListerGraph is an undirected graph than returns its complete set of edges.
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch.go
index 5e30d5b..a012b9b 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch.go
@@ -6,7 +6,7 @@ package topo
import (
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// VertexOrdering returns the vertex ordering and the k-cores of
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch_test.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch_test.go
index 3d22c36..73e303c 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/bron_kerbosch_test.go
@@ -10,7 +10,7 @@ import (
"testing"
"github.com/gonum/graph/concrete"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/topo"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles.go
index 36d4cbd..ce9318e 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles.go
@@ -8,7 +8,7 @@ import (
"sort"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// johnson implements Johnson's "Finding all the elementary
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles_test.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles_test.go
index a1ee6e1..149fff2 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/johnson_cycles_test.go
@@ -10,7 +10,7 @@ import (
"testing"
"github.com/gonum/graph/concrete"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/topo"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan.go
index 908358c..f779bbb 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan.go
@@ -9,7 +9,7 @@ import (
"sort"
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// Unorderable is an error containing sets of unorderable graph.Nodes.
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan_test.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan_test.go
index 504633f..63c1a82 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/tarjan_test.go
@@ -10,7 +10,7 @@ import (
"testing"
"github.com/gonum/graph/concrete"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/topo"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/topo/topo_test.go b/Godeps/_workspace/src/github.com/gonum/graph/topo/topo_test.go
index d903ee1..d71b788 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/topo/topo_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/topo/topo_test.go
@@ -11,7 +11,7 @@ import (
"github.com/gonum/graph"
"github.com/gonum/graph/concrete"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/topo"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse.go b/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse.go
index bb0fdad..a7eb54d 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse.go
@@ -7,7 +7,7 @@ package traverse
import (
"github.com/gonum/graph"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
)
// BreadthFirst implements stateful breadth-first graph traversal.
diff --git a/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse_test.go b/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse_test.go
index c5a4e2a..b771b46 100644
--- a/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse_test.go
+++ b/Godeps/_workspace/src/github.com/gonum/graph/traverse/traverse_test.go
@@ -12,7 +12,7 @@ import (
"github.com/gonum/graph"
"github.com/gonum/graph/concrete"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/traverse"
)
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/caxpy.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/caxpy.go
new file mode 100644
index 0000000..80d802a
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/caxpy.go
@@ -0,0 +1,22 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+// The extra z parameter is needed because of floats.AddScaledTo
+func CaxpyUnitary(alpha complex64, x, y, z []complex64) {
+ for i, v := range x {
+ z[i] = alpha*v + y[i]
+ }
+}
+
+func CaxpyInc(alpha complex64, x, y []complex64, n, incX, incY, ix, iy uintptr) {
+ for i := 0; i < int(n); i++ {
+ y[iy] += alpha * x[ix]
+ ix += incX
+ iy += incY
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotc.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotc.go
new file mode 100644
index 0000000..ed999e5
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotc.go
@@ -0,0 +1,23 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+func CdotcUnitary(x, y []complex64) (sum complex64) {
+ for i, v := range x {
+ sum += y[i] * conj(v)
+ }
+ return
+}
+
+func CdotcInc(x, y []complex64, n, incX, incY, ix, iy uintptr) (sum complex64) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * conj(x[ix])
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotu.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotu.go
new file mode 100644
index 0000000..3392ee2
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/cdotu.go
@@ -0,0 +1,23 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+func CdotuUnitary(x, y []complex64) (sum complex64) {
+ for i, v := range x {
+ sum += y[i] * v
+ }
+ return
+}
+
+func CdotuInc(x, y []complex64, n, incX, incY, ix, iy uintptr) (sum complex64) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * x[ix]
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/complex b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/complex
new file mode 100644
index 0000000..b26e4e6
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/complex
@@ -0,0 +1,58 @@
+#!/usr/bin/env bash
+
+# Copyright ©2015 The gonum Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+echo Generating zdotu.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > zdotu.go
+cat ddot.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> complex128' \
+| sed 's/Ddot/Zdotu/' \
+>> zdotu.go
+
+echo Generating zdotc.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > zdotc.go
+cat ddot.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> complex128' \
+| gofmt -r 'y[i] * v -> y[i] * cmplx.Conj(v)' \
+| sed 's/Ddot/Zdotc/' \
+| goimports \
+>> zdotc.go
+
+echo Generating zaxpy.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > zaxpy.go
+cat daxpy.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> complex128' \
+| sed 's/Daxpy/Zaxpy/' \
+>> zaxpy.go
+
+echo Generating cdotu.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > cdotu.go
+cat ddot.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> complex64' \
+| sed 's/Ddot/Cdotu/' \
+>> cdotu.go
+
+echo Generating cdotc.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > cdotc.go
+cat ddot.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> complex64' \
+| gofmt -r 'y[i] * v -> y[i] * conj(v)' \
+| sed 's/Ddot/Cdotc/' \
+| goimports \
+>> cdotc.go
+
+echo Generating caxpy.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > caxpy.go
+cat daxpy.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> complex64' \
+| sed 's/Daxpy/Caxpy/' \
+>> caxpy.go
+
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/conj.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/conj.go
new file mode 100644
index 0000000..1cadb2a
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/conj.go
@@ -0,0 +1,7 @@
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+func conj(c complex64) complex64 { return complex(real(c), -imag(c)) }
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy.go
new file mode 100644
index 0000000..24979fc
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy.go
@@ -0,0 +1,22 @@
+// Copyright ©2015 The gonum 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 !amd64 noasm
+
+package asm
+
+// The extra z parameter is needed because of floats.AddScaledTo
+func DaxpyUnitary(alpha float64, x, y, z []float64) {
+ for i, v := range x {
+ z[i] = alpha*v + y[i]
+ }
+}
+
+func DaxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr) {
+ for i := 0; i < int(n); i++ {
+ y[iy] += alpha * x[ix]
+ ix += incX
+ iy += incY
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.go
new file mode 100644
index 0000000..d1aeacf
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.go
@@ -0,0 +1,12 @@
+// Copyright ©2015 The gonum 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 !noasm
+
+package asm
+
+// The extra z parameter is needed because of floats.AddScaledTo
+func DaxpyUnitary(alpha float64, x, y, z []float64)
+
+func DaxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr)
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.s b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.s
new file mode 100644
index 0000000..18f2d3c
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/daxpy_amd64.s
@@ -0,0 +1,140 @@
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+//
+// Some of the loop unrolling code is copied from:
+// http://golang.org/src/math/big/arith_amd64.s
+// which is distributed under these terms:
+//
+// Copyright (c) 2012 The Go Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//+build !noasm
+
+// TODO(fhs): use textflag.h after we drop Go 1.3 support
+//#include "textflag.h"
+// Don't insert stack check preamble.
+#define NOSPLIT 4
+
+
+// func DaxpyUnitary(alpha float64, x, y, z []float64)
+// This function assumes len(y) >= len(x).
+TEXT ·DaxpyUnitary(SB),NOSPLIT,$0
+ MOVHPD alpha+0(FP), X7
+ MOVLPD alpha+0(FP), X7
+ MOVQ x_len+16(FP), DI // n = len(x)
+ MOVQ x+8(FP), R8
+ MOVQ y+32(FP), R9
+ MOVQ z+56(FP), R10
+
+ MOVQ $0, SI // i = 0
+ SUBQ $2, DI // n -= 2
+ JL V1 // if n < 0 goto V1
+
+U1: // n >= 0
+ // y[i] += alpha * x[i] unrolled 2x.
+ MOVUPD 0(R8)(SI*8), X0
+ MOVUPD 0(R9)(SI*8), X1
+ MULPD X7, X0
+ ADDPD X0, X1
+ MOVUPD X1, 0(R10)(SI*8)
+
+ ADDQ $2, SI // i += 2
+ SUBQ $2, DI // n -= 2
+ JGE U1 // if n >= 0 goto U1
+
+V1:
+ ADDQ $2, DI // n += 2
+ JLE E1 // if n <= 0 goto E1
+
+ // y[i] += alpha * x[i] for last iteration if n is odd.
+ MOVSD 0(R8)(SI*8), X0
+ MOVSD 0(R9)(SI*8), X1
+ MULSD X7, X0
+ ADDSD X0, X1
+ MOVSD X1, 0(R10)(SI*8)
+
+E1:
+ RET
+
+
+// func DaxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr)
+TEXT ·DaxpyInc(SB),NOSPLIT,$0
+ MOVHPD alpha+0(FP), X7
+ MOVLPD alpha+0(FP), X7
+ MOVQ x+8(FP), R8
+ MOVQ y+32(FP), R9
+ MOVQ n+56(FP), CX
+ MOVQ incX+64(FP), R11
+ MOVQ incY+72(FP), R12
+ MOVQ ix+80(FP), SI
+ MOVQ iy+88(FP), DI
+
+ MOVQ SI, AX // nextX = ix
+ MOVQ DI, BX // nextY = iy
+ ADDQ R11, AX // nextX += incX
+ ADDQ R12, BX // nextY += incX
+ SHLQ $1, R11 // indX *= 2
+ SHLQ $1, R12 // indY *= 2
+
+ SUBQ $2, CX // n -= 2
+ JL V2 // if n < 0 goto V2
+
+U2: // n >= 0
+ // y[i] += alpha * x[i] unrolled 2x.
+ MOVHPD 0(R8)(SI*8), X0
+ MOVHPD 0(R9)(DI*8), X1
+ MOVLPD 0(R8)(AX*8), X0
+ MOVLPD 0(R9)(BX*8), X1
+
+ MULPD X7, X0
+ ADDPD X0, X1
+ MOVHPD X1, 0(R9)(DI*8)
+ MOVLPD X1, 0(R9)(BX*8)
+
+ ADDQ R11, SI // ix += incX
+ ADDQ R12, DI // iy += incY
+ ADDQ R11, AX // nextX += incX
+ ADDQ R12, BX // nextY += incY
+
+ SUBQ $2, CX // n -= 2
+ JGE U2 // if n >= 0 goto U2
+
+V2:
+ ADDQ $2, CX // n += 2
+ JLE E2 // if n <= 0 goto E2
+
+ // y[i] += alpha * x[i] for the last iteration if n is odd.
+ MOVSD 0(R8)(SI*8), X0
+ MOVSD 0(R9)(DI*8), X1
+ MULSD X7, X0
+ ADDSD X0, X1
+ MOVSD X1, 0(R9)(DI*8)
+
+E2:
+ RET
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot.go
new file mode 100644
index 0000000..7e69957
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot.go
@@ -0,0 +1,23 @@
+// Copyright ©2015 The gonum 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 !amd64 noasm
+
+package asm
+
+func DdotUnitary(x, y []float64) (sum float64) {
+ for i, v := range x {
+ sum += y[i] * v
+ }
+ return
+}
+
+func DdotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * x[ix]
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.go
new file mode 100644
index 0000000..7fa634a
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.go
@@ -0,0 +1,10 @@
+// Copyright ©2015 The gonum 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 !noasm
+
+package asm
+
+func DdotUnitary(x, y []float64) (sum float64)
+func DdotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64)
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.s b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.s
new file mode 100644
index 0000000..a898bbb
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/ddot_amd64.s
@@ -0,0 +1,140 @@
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+//
+// Some of the loop unrolling code is copied from:
+// http://golang.org/src/math/big/arith_amd64.s
+// which is distributed under these terms:
+//
+// Copyright (c) 2012 The Go Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+//+build !noasm
+
+// TODO(fhs): use textflag.h after we drop Go 1.3 support
+//#include "textflag.h"
+// Don't insert stack check preamble.
+#define NOSPLIT 4
+
+
+// func DdotUnitary(x, y []float64) (sum float64)
+// This function assumes len(y) >= len(x).
+TEXT ·DdotUnitary(SB),NOSPLIT,$0
+ MOVQ x_len+8(FP), DI // n = len(x)
+ MOVQ x+0(FP), R8
+ MOVQ y+24(FP), R9
+
+ MOVQ $0, SI // i = 0
+ MOVSD $(0.0), X7 // sum = 0
+
+ SUBQ $2, DI // n -= 2
+ JL V1 // if n < 0 goto V1
+
+U1: // n >= 0
+ // sum += x[i] * y[i] unrolled 2x.
+ MOVUPD 0(R8)(SI*8), X0
+ MOVUPD 0(R9)(SI*8), X1
+ MULPD X1, X0
+ ADDPD X0, X7
+
+ ADDQ $2, SI // i += 2
+ SUBQ $2, DI // n -= 2
+ JGE U1 // if n >= 0 goto U1
+
+V1: // n > 0
+ ADDQ $2, DI // n += 2
+ JLE E1 // if n <= 0 goto E1
+
+ // sum += x[i] * y[i] for last iteration if n is odd.
+ MOVSD 0(R8)(SI*8), X0
+ MOVSD 0(R9)(SI*8), X1
+ MULSD X1, X0
+ ADDSD X0, X7
+
+E1:
+ // Add the two sums together.
+ MOVSD X7, X0
+ UNPCKHPD X7, X7
+ ADDSD X0, X7
+ MOVSD X7, sum+48(FP) // return final sum
+ RET
+
+
+// func DdotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64)
+TEXT ·DdotInc(SB),NOSPLIT,$0
+ MOVQ x+0(FP), R8
+ MOVQ y+24(FP), R9
+ MOVQ n+48(FP), CX
+ MOVQ incX+56(FP), R11
+ MOVQ incY+64(FP), R12
+ MOVQ ix+72(FP), R13
+ MOVQ iy+80(FP), R14
+
+ MOVSD $(0.0), X7 // sum = 0
+ LEAQ (R8)(R13*8), SI // p = &x[ix]
+ LEAQ (R9)(R14*8), DI // q = &y[ix]
+ SHLQ $3, R11 // incX *= sizeof(float64)
+ SHLQ $3, R12 // indY *= sizeof(float64)
+
+ SUBQ $2, CX // n -= 2
+ JL V2 // if n < 0 goto V2
+
+U2: // n >= 0
+ // sum += *p * *q unrolled 2x.
+ MOVHPD (SI), X0
+ MOVHPD (DI), X1
+ ADDQ R11, SI // p += incX
+ ADDQ R12, DI // q += incY
+ MOVLPD (SI), X0
+ MOVLPD (DI), X1
+ ADDQ R11, SI // p += incX
+ ADDQ R12, DI // q += incY
+
+ MULPD X1, X0
+ ADDPD X0, X7
+
+ SUBQ $2, CX // n -= 2
+ JGE U2 // if n >= 0 goto U2
+
+V2:
+ ADDQ $2, CX // n += 2
+ JLE E2 // if n <= 0 goto E2
+
+ // sum += *p * *q for the last iteration if n is odd.
+ MOVSD (SI), X0
+ MULSD (DI), X0
+ ADDSD X0, X7
+
+E2:
+ // Add the two sums together.
+ MOVSD X7, X0
+ UNPCKHPD X7, X7
+ ADDSD X0, X7
+ MOVSD X7, sum+88(FP) // return final sum
+ RET
+
\ No newline at end of file
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/dsdot.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/dsdot.go
new file mode 100644
index 0000000..8450689
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/dsdot.go
@@ -0,0 +1,23 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+func DsdotUnitary(x, y []float32) (sum float64) {
+ for i, v := range x {
+ sum += float64(y[i]) * float64(v)
+ }
+ return
+}
+
+func DsdotInc(x, y []float32, n, incX, incY, ix, iy uintptr) (sum float64) {
+ for i := 0; i < int(n); i++ {
+ sum += float64(y[iy]) * float64(x[ix])
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/generate.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/generate.go
new file mode 100644
index 0000000..e252140
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/generate.go
@@ -0,0 +1,8 @@
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+//go:generate ./single_precision
+//go:generate ./complex
+
+package asm
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/saxpy.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/saxpy.go
new file mode 100644
index 0000000..3ef767f
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/saxpy.go
@@ -0,0 +1,22 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+// The extra z parameter is needed because of floats.AddScaledTo
+func SaxpyUnitary(alpha float32, x, y, z []float32) {
+ for i, v := range x {
+ z[i] = alpha*v + y[i]
+ }
+}
+
+func SaxpyInc(alpha float32, x, y []float32, n, incX, incY, ix, iy uintptr) {
+ for i := 0; i < int(n); i++ {
+ y[iy] += alpha * x[ix]
+ ix += incX
+ iy += incY
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/sdot.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/sdot.go
new file mode 100644
index 0000000..0cef5de
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/sdot.go
@@ -0,0 +1,23 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+func SdotUnitary(x, y []float32) (sum float32) {
+ for i, v := range x {
+ sum += y[i] * v
+ }
+ return
+}
+
+func SdotInc(x, y []float32, n, incX, incY, ix, iy uintptr) (sum float32) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * x[ix]
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/single_precision b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/single_precision
new file mode 100644
index 0000000..a937a97
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/single_precision
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+# Copyright ©2015 The gonum Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+echo Generating dsdot.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > dsdot.go
+cat ddot.go \
+| grep -v '//+build' \
+| gofmt -r '[]float64 -> []float32' \
+| gofmt -r 'a * b -> float64(a) * float64(b)' \
+| sed 's/Ddot/Dsdot/' \
+>> dsdot.go
+
+echo Generating sdot.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > sdot.go
+cat ddot.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> float32' \
+| sed 's/Ddot/Sdot/' \
+>> sdot.go
+
+echo Generating saxpy.go
+echo -e '// Generated code do not edit. Run `go generate`.\n' > saxpy.go
+cat daxpy.go \
+| grep -v '//+build' \
+| gofmt -r 'float64 -> float32' \
+| sed 's/Daxpy/Saxpy/' \
+>> saxpy.go
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zaxpy.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zaxpy.go
new file mode 100644
index 0000000..9478f25
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zaxpy.go
@@ -0,0 +1,22 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+// The extra z parameter is needed because of floats.AddScaledTo
+func ZaxpyUnitary(alpha complex128, x, y, z []complex128) {
+ for i, v := range x {
+ z[i] = alpha*v + y[i]
+ }
+}
+
+func ZaxpyInc(alpha complex128, x, y []complex128, n, incX, incY, ix, iy uintptr) {
+ for i := 0; i < int(n); i++ {
+ y[iy] += alpha * x[ix]
+ ix += incX
+ iy += incY
+ }
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotc.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotc.go
new file mode 100644
index 0000000..7b8febc
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotc.go
@@ -0,0 +1,25 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+import "math/cmplx"
+
+func ZdotcUnitary(x, y []complex128) (sum complex128) {
+ for i, v := range x {
+ sum += y[i] * cmplx.Conj(v)
+ }
+ return
+}
+
+func ZdotcInc(x, y []complex128, n, incX, incY, ix, iy uintptr) (sum complex128) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * cmplx.Conj(x[ix])
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotu.go b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotu.go
new file mode 100644
index 0000000..82c1fe2
--- /dev/null
+++ b/Godeps/_workspace/src/github.com/gonum/inteernal/asm/zdotu.go
@@ -0,0 +1,23 @@
+// Generated code do not edit. Run `go generate`.
+
+// Copyright ©2015 The gonum Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package asm
+
+func ZdotuUnitary(x, y []complex128) (sum complex128) {
+ for i, v := range x {
+ sum += y[i] * v
+ }
+ return
+}
+
+func ZdotuInc(x, y []complex128, n, incX, incY, ix, iy uintptr) (sum complex128) {
+ for i := 0; i < int(n); i++ {
+ sum += y[iy] * x[ix]
+ ix += incX
+ iy += incY
+ }
+ return
+}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/caxpy.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/caxpy.go
deleted file mode 100644
index 80d802a..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/caxpy.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-// The extra z parameter is needed because of floats.AddScaledTo
-func CaxpyUnitary(alpha complex64, x, y, z []complex64) {
- for i, v := range x {
- z[i] = alpha*v + y[i]
- }
-}
-
-func CaxpyInc(alpha complex64, x, y []complex64, n, incX, incY, ix, iy uintptr) {
- for i := 0; i < int(n); i++ {
- y[iy] += alpha * x[ix]
- ix += incX
- iy += incY
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/cdotc.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/cdotc.go
deleted file mode 100644
index ed999e5..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/cdotc.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-func CdotcUnitary(x, y []complex64) (sum complex64) {
- for i, v := range x {
- sum += y[i] * conj(v)
- }
- return
-}
-
-func CdotcInc(x, y []complex64, n, incX, incY, ix, iy uintptr) (sum complex64) {
- for i := 0; i < int(n); i++ {
- sum += y[iy] * conj(x[ix])
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/cdotu.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/cdotu.go
deleted file mode 100644
index 3392ee2..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/cdotu.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-func CdotuUnitary(x, y []complex64) (sum complex64) {
- for i, v := range x {
- sum += y[i] * v
- }
- return
-}
-
-func CdotuInc(x, y []complex64, n, incX, incY, ix, iy uintptr) (sum complex64) {
- for i := 0; i < int(n); i++ {
- sum += y[iy] * x[ix]
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/complex b/Godeps/_workspace/src/github.com/gonum/internal/asm/complex
deleted file mode 100644
index b26e4e6..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/complex
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright ©2015 The gonum Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-echo Generating zdotu.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > zdotu.go
-cat ddot.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> complex128' \
-| sed 's/Ddot/Zdotu/' \
->> zdotu.go
-
-echo Generating zdotc.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > zdotc.go
-cat ddot.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> complex128' \
-| gofmt -r 'y[i] * v -> y[i] * cmplx.Conj(v)' \
-| sed 's/Ddot/Zdotc/' \
-| goimports \
->> zdotc.go
-
-echo Generating zaxpy.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > zaxpy.go
-cat daxpy.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> complex128' \
-| sed 's/Daxpy/Zaxpy/' \
->> zaxpy.go
-
-echo Generating cdotu.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > cdotu.go
-cat ddot.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> complex64' \
-| sed 's/Ddot/Cdotu/' \
->> cdotu.go
-
-echo Generating cdotc.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > cdotc.go
-cat ddot.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> complex64' \
-| gofmt -r 'y[i] * v -> y[i] * conj(v)' \
-| sed 's/Ddot/Cdotc/' \
-| goimports \
->> cdotc.go
-
-echo Generating caxpy.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > caxpy.go
-cat daxpy.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> complex64' \
-| sed 's/Daxpy/Caxpy/' \
->> caxpy.go
-
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/conj.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/conj.go
deleted file mode 100644
index 1cadb2a..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/conj.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-func conj(c complex64) complex64 { return complex(real(c), -imag(c)) }
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy.go
deleted file mode 100644
index 24979fc..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright ©2015 The gonum 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 !amd64 noasm
-
-package asm
-
-// The extra z parameter is needed because of floats.AddScaledTo
-func DaxpyUnitary(alpha float64, x, y, z []float64) {
- for i, v := range x {
- z[i] = alpha*v + y[i]
- }
-}
-
-func DaxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr) {
- for i := 0; i < int(n); i++ {
- y[iy] += alpha * x[ix]
- ix += incX
- iy += incY
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.go
deleted file mode 100644
index d1aeacf..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright ©2015 The gonum 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 !noasm
-
-package asm
-
-// The extra z parameter is needed because of floats.AddScaledTo
-func DaxpyUnitary(alpha float64, x, y, z []float64)
-
-func DaxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr)
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.s b/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.s
deleted file mode 100644
index 18f2d3c..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/daxpy_amd64.s
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-//
-// Some of the loop unrolling code is copied from:
-// http://golang.org/src/math/big/arith_amd64.s
-// which is distributed under these terms:
-//
-// Copyright (c) 2012 The Go Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//+build !noasm
-
-// TODO(fhs): use textflag.h after we drop Go 1.3 support
-//#include "textflag.h"
-// Don't insert stack check preamble.
-#define NOSPLIT 4
-
-
-// func DaxpyUnitary(alpha float64, x, y, z []float64)
-// This function assumes len(y) >= len(x).
-TEXT ·DaxpyUnitary(SB),NOSPLIT,$0
- MOVHPD alpha+0(FP), X7
- MOVLPD alpha+0(FP), X7
- MOVQ x_len+16(FP), DI // n = len(x)
- MOVQ x+8(FP), R8
- MOVQ y+32(FP), R9
- MOVQ z+56(FP), R10
-
- MOVQ $0, SI // i = 0
- SUBQ $2, DI // n -= 2
- JL V1 // if n < 0 goto V1
-
-U1: // n >= 0
- // y[i] += alpha * x[i] unrolled 2x.
- MOVUPD 0(R8)(SI*8), X0
- MOVUPD 0(R9)(SI*8), X1
- MULPD X7, X0
- ADDPD X0, X1
- MOVUPD X1, 0(R10)(SI*8)
-
- ADDQ $2, SI // i += 2
- SUBQ $2, DI // n -= 2
- JGE U1 // if n >= 0 goto U1
-
-V1:
- ADDQ $2, DI // n += 2
- JLE E1 // if n <= 0 goto E1
-
- // y[i] += alpha * x[i] for last iteration if n is odd.
- MOVSD 0(R8)(SI*8), X0
- MOVSD 0(R9)(SI*8), X1
- MULSD X7, X0
- ADDSD X0, X1
- MOVSD X1, 0(R10)(SI*8)
-
-E1:
- RET
-
-
-// func DaxpyInc(alpha float64, x, y []float64, n, incX, incY, ix, iy uintptr)
-TEXT ·DaxpyInc(SB),NOSPLIT,$0
- MOVHPD alpha+0(FP), X7
- MOVLPD alpha+0(FP), X7
- MOVQ x+8(FP), R8
- MOVQ y+32(FP), R9
- MOVQ n+56(FP), CX
- MOVQ incX+64(FP), R11
- MOVQ incY+72(FP), R12
- MOVQ ix+80(FP), SI
- MOVQ iy+88(FP), DI
-
- MOVQ SI, AX // nextX = ix
- MOVQ DI, BX // nextY = iy
- ADDQ R11, AX // nextX += incX
- ADDQ R12, BX // nextY += incX
- SHLQ $1, R11 // indX *= 2
- SHLQ $1, R12 // indY *= 2
-
- SUBQ $2, CX // n -= 2
- JL V2 // if n < 0 goto V2
-
-U2: // n >= 0
- // y[i] += alpha * x[i] unrolled 2x.
- MOVHPD 0(R8)(SI*8), X0
- MOVHPD 0(R9)(DI*8), X1
- MOVLPD 0(R8)(AX*8), X0
- MOVLPD 0(R9)(BX*8), X1
-
- MULPD X7, X0
- ADDPD X0, X1
- MOVHPD X1, 0(R9)(DI*8)
- MOVLPD X1, 0(R9)(BX*8)
-
- ADDQ R11, SI // ix += incX
- ADDQ R12, DI // iy += incY
- ADDQ R11, AX // nextX += incX
- ADDQ R12, BX // nextY += incY
-
- SUBQ $2, CX // n -= 2
- JGE U2 // if n >= 0 goto U2
-
-V2:
- ADDQ $2, CX // n += 2
- JLE E2 // if n <= 0 goto E2
-
- // y[i] += alpha * x[i] for the last iteration if n is odd.
- MOVSD 0(R8)(SI*8), X0
- MOVSD 0(R9)(DI*8), X1
- MULSD X7, X0
- ADDSD X0, X1
- MOVSD X1, 0(R9)(DI*8)
-
-E2:
- RET
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot.go
deleted file mode 100644
index 7e69957..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright ©2015 The gonum 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 !amd64 noasm
-
-package asm
-
-func DdotUnitary(x, y []float64) (sum float64) {
- for i, v := range x {
- sum += y[i] * v
- }
- return
-}
-
-func DdotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64) {
- for i := 0; i < int(n); i++ {
- sum += y[iy] * x[ix]
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.go
deleted file mode 100644
index 7fa634a..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.go
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright ©2015 The gonum 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 !noasm
-
-package asm
-
-func DdotUnitary(x, y []float64) (sum float64)
-func DdotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64)
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.s b/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.s
deleted file mode 100644
index a898bbb..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/ddot_amd64.s
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-//
-// Some of the loop unrolling code is copied from:
-// http://golang.org/src/math/big/arith_amd64.s
-// which is distributed under these terms:
-//
-// Copyright (c) 2012 The Go Authors. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-//+build !noasm
-
-// TODO(fhs): use textflag.h after we drop Go 1.3 support
-//#include "textflag.h"
-// Don't insert stack check preamble.
-#define NOSPLIT 4
-
-
-// func DdotUnitary(x, y []float64) (sum float64)
-// This function assumes len(y) >= len(x).
-TEXT ·DdotUnitary(SB),NOSPLIT,$0
- MOVQ x_len+8(FP), DI // n = len(x)
- MOVQ x+0(FP), R8
- MOVQ y+24(FP), R9
-
- MOVQ $0, SI // i = 0
- MOVSD $(0.0), X7 // sum = 0
-
- SUBQ $2, DI // n -= 2
- JL V1 // if n < 0 goto V1
-
-U1: // n >= 0
- // sum += x[i] * y[i] unrolled 2x.
- MOVUPD 0(R8)(SI*8), X0
- MOVUPD 0(R9)(SI*8), X1
- MULPD X1, X0
- ADDPD X0, X7
-
- ADDQ $2, SI // i += 2
- SUBQ $2, DI // n -= 2
- JGE U1 // if n >= 0 goto U1
-
-V1: // n > 0
- ADDQ $2, DI // n += 2
- JLE E1 // if n <= 0 goto E1
-
- // sum += x[i] * y[i] for last iteration if n is odd.
- MOVSD 0(R8)(SI*8), X0
- MOVSD 0(R9)(SI*8), X1
- MULSD X1, X0
- ADDSD X0, X7
-
-E1:
- // Add the two sums together.
- MOVSD X7, X0
- UNPCKHPD X7, X7
- ADDSD X0, X7
- MOVSD X7, sum+48(FP) // return final sum
- RET
-
-
-// func DdotInc(x, y []float64, n, incX, incY, ix, iy uintptr) (sum float64)
-TEXT ·DdotInc(SB),NOSPLIT,$0
- MOVQ x+0(FP), R8
- MOVQ y+24(FP), R9
- MOVQ n+48(FP), CX
- MOVQ incX+56(FP), R11
- MOVQ incY+64(FP), R12
- MOVQ ix+72(FP), R13
- MOVQ iy+80(FP), R14
-
- MOVSD $(0.0), X7 // sum = 0
- LEAQ (R8)(R13*8), SI // p = &x[ix]
- LEAQ (R9)(R14*8), DI // q = &y[ix]
- SHLQ $3, R11 // incX *= sizeof(float64)
- SHLQ $3, R12 // indY *= sizeof(float64)
-
- SUBQ $2, CX // n -= 2
- JL V2 // if n < 0 goto V2
-
-U2: // n >= 0
- // sum += *p * *q unrolled 2x.
- MOVHPD (SI), X0
- MOVHPD (DI), X1
- ADDQ R11, SI // p += incX
- ADDQ R12, DI // q += incY
- MOVLPD (SI), X0
- MOVLPD (DI), X1
- ADDQ R11, SI // p += incX
- ADDQ R12, DI // q += incY
-
- MULPD X1, X0
- ADDPD X0, X7
-
- SUBQ $2, CX // n -= 2
- JGE U2 // if n >= 0 goto U2
-
-V2:
- ADDQ $2, CX // n += 2
- JLE E2 // if n <= 0 goto E2
-
- // sum += *p * *q for the last iteration if n is odd.
- MOVSD (SI), X0
- MULSD (DI), X0
- ADDSD X0, X7
-
-E2:
- // Add the two sums together.
- MOVSD X7, X0
- UNPCKHPD X7, X7
- ADDSD X0, X7
- MOVSD X7, sum+88(FP) // return final sum
- RET
-
\ No newline at end of file
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/dsdot.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/dsdot.go
deleted file mode 100644
index 8450689..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/dsdot.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-func DsdotUnitary(x, y []float32) (sum float64) {
- for i, v := range x {
- sum += float64(y[i]) * float64(v)
- }
- return
-}
-
-func DsdotInc(x, y []float32, n, incX, incY, ix, iy uintptr) (sum float64) {
- for i := 0; i < int(n); i++ {
- sum += float64(y[iy]) * float64(x[ix])
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/generate.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/generate.go
deleted file mode 100644
index e252140..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/generate.go
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:generate ./single_precision
-//go:generate ./complex
-
-package asm
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/saxpy.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/saxpy.go
deleted file mode 100644
index 3ef767f..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/saxpy.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-// The extra z parameter is needed because of floats.AddScaledTo
-func SaxpyUnitary(alpha float32, x, y, z []float32) {
- for i, v := range x {
- z[i] = alpha*v + y[i]
- }
-}
-
-func SaxpyInc(alpha float32, x, y []float32, n, incX, incY, ix, iy uintptr) {
- for i := 0; i < int(n); i++ {
- y[iy] += alpha * x[ix]
- ix += incX
- iy += incY
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/sdot.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/sdot.go
deleted file mode 100644
index 0cef5de..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/sdot.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-func SdotUnitary(x, y []float32) (sum float32) {
- for i, v := range x {
- sum += y[i] * v
- }
- return
-}
-
-func SdotInc(x, y []float32, n, incX, incY, ix, iy uintptr) (sum float32) {
- for i := 0; i < int(n); i++ {
- sum += y[iy] * x[ix]
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/single_precision b/Godeps/_workspace/src/github.com/gonum/internal/asm/single_precision
deleted file mode 100644
index a937a97..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/single_precision
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-
-# Copyright ©2015 The gonum Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-echo Generating dsdot.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > dsdot.go
-cat ddot.go \
-| grep -v '//+build' \
-| gofmt -r '[]float64 -> []float32' \
-| gofmt -r 'a * b -> float64(a) * float64(b)' \
-| sed 's/Ddot/Dsdot/' \
->> dsdot.go
-
-echo Generating sdot.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > sdot.go
-cat ddot.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> float32' \
-| sed 's/Ddot/Sdot/' \
->> sdot.go
-
-echo Generating saxpy.go
-echo -e '// Generated code do not edit. Run `go generate`.\n' > saxpy.go
-cat daxpy.go \
-| grep -v '//+build' \
-| gofmt -r 'float64 -> float32' \
-| sed 's/Daxpy/Saxpy/' \
->> saxpy.go
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/zaxpy.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/zaxpy.go
deleted file mode 100644
index 9478f25..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/zaxpy.go
+++ /dev/null
@@ -1,22 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-// The extra z parameter is needed because of floats.AddScaledTo
-func ZaxpyUnitary(alpha complex128, x, y, z []complex128) {
- for i, v := range x {
- z[i] = alpha*v + y[i]
- }
-}
-
-func ZaxpyInc(alpha complex128, x, y []complex128, n, incX, incY, ix, iy uintptr) {
- for i := 0; i < int(n); i++ {
- y[iy] += alpha * x[ix]
- ix += incX
- iy += incY
- }
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/zdotc.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/zdotc.go
deleted file mode 100644
index 7b8febc..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/zdotc.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-import "math/cmplx"
-
-func ZdotcUnitary(x, y []complex128) (sum complex128) {
- for i, v := range x {
- sum += y[i] * cmplx.Conj(v)
- }
- return
-}
-
-func ZdotcInc(x, y []complex128, n, incX, incY, ix, iy uintptr) (sum complex128) {
- for i := 0; i < int(n); i++ {
- sum += y[iy] * cmplx.Conj(x[ix])
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/internal/asm/zdotu.go b/Godeps/_workspace/src/github.com/gonum/internal/asm/zdotu.go
deleted file mode 100644
index 82c1fe2..0000000
--- a/Godeps/_workspace/src/github.com/gonum/internal/asm/zdotu.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Generated code do not edit. Run `go generate`.
-
-// Copyright ©2015 The gonum Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package asm
-
-func ZdotuUnitary(x, y []complex128) (sum complex128) {
- for i, v := range x {
- sum += y[i] * v
- }
- return
-}
-
-func ZdotuInc(x, y []complex128, n, incX, incY, ix, iy uintptr) (sum complex128) {
- for i := 0; i < int(n); i++ {
- sum += y[iy] * x[ix]
- ix += incX
- iy += incY
- }
- return
-}
diff --git a/Godeps/_workspace/src/github.com/gonum/matrix/mat64/inner.go b/Godeps/_workspace/src/github.com/gonum/matrix/mat64/inner.go
index 77616ba..1610a83 100644
--- a/Godeps/_workspace/src/github.com/gonum/matrix/mat64/inner.go
+++ b/Godeps/_workspace/src/github.com/gonum/matrix/mat64/inner.go
@@ -6,7 +6,7 @@ package mat64
import (
"github.com/gonum/blas"
- "github.com/gonum/internal/asm"
+ "github.com/gonum/inteernal/asm"
)
// Inner computes the generalized inner product
diff --git a/pkg/cmd/cli/describe/chaindescriber.go b/pkg/cmd/cli/describe/chaindescriber.go
index 2ca7c6e..2d2b6c8 100644
--- a/pkg/cmd/cli/describe/chaindescriber.go
+++ b/pkg/cmd/cli/describe/chaindescriber.go
@@ -8,7 +8,7 @@ import (
"github.com/golang/glog"
"github.com/gonum/graph"
"github.com/gonum/graph/encoding/dot"
- "github.com/gonum/graph/internal"
+ "github.com/gonum/graph/inteernal"
"github.com/gonum/graph/path"
kapi "k8s.io/kubernetes/pkg/api"
utilerrors "k8s.io/kubernetes/pkg/util/errors"
--
1.9.3