--- /dev/null
+// 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 mat_test
+
+import (
+ "fmt"
+
+ "gonum.org/v1/gonum/mat"
+)
+
+func ExampleFormatted() {
+ a := mat.NewDense(3, 3, []float64{1, 2, 3, 0, 4, 5, 0, 0, 6})
+
+ // Create a matrix formatting value with a prefix and calculating each column
+ // width individually...
+ fa := mat.Formatted(a, mat.Prefix(" "), mat.Squeeze())
+
+ // and then print with and without zero value elements.
+ fmt.Printf("with all values:\na = %v\n\n", fa)
+ fmt.Printf("with only non-zero values:\na = % v\n\n", fa)
+
+ // Modify the matrix...
+ a.Set(0, 2, 0)
+
+ // and print it without zero value elements.
+ fmt.Printf("after modification with only non-zero values:\na = % v\n\n", fa)
+
+ // Modify the matrix again...
+ a.Set(0, 2, 123.456)
+
+ // and print it using scientific notation for large exponents.
+ fmt.Printf("after modification with scientific notation:\na = %.2g\n\n", fa)
+ // See golang.org/pkg/fmt/ floating-point verbs for a comprehensive list.
+
+ // Output:
+ // with all values:
+ // a = ⎡1 2 3⎤
+ // ⎢0 4 5⎥
+ // ⎣0 0 6⎦
+ //
+ // with only non-zero values:
+ // a = ⎡1 2 3⎤
+ // ⎢. 4 5⎥
+ // ⎣. . 6⎦
+ //
+ // after modification with only non-zero values:
+ // a = ⎡1 2 .⎤
+ // ⎢. 4 5⎥
+ // ⎣. . 6⎦
+ //
+ // after modification with scientific notation:
+ // a = ⎡1 2 1.2e+02⎤
+ // ⎢0 4 5⎥
+ // ⎣0 0 6⎦
+}
+
+func ExampleExcerpt() {
+ // Excerpt allows diagnostic display of very large
+ // matrices and vectors.
+
+ // The big matrix is too large to properly print...
+ big := mat.NewDense(100, 100, nil)
+ for i := 0; i < 100; i++ {
+ big.Set(i, i, 1)
+ }
+
+ // so only print corner excerpts of the matrix.
+ fmt.Printf("excerpt big identity matrix: %v\n\n",
+ mat.Formatted(big, mat.Prefix(" "), mat.Excerpt(3)))
+
+ // The long vector is also too large, ...
+ long := mat.NewVecDense(100, nil)
+ for i := 0; i < 100; i++ {
+ long.SetVec(i, float64(i))
+ }
+
+ // ... so print end excerpts of the vector,
+ fmt.Printf("excerpt long column vector: %v\n\n",
+ mat.Formatted(long, mat.Prefix(" "), mat.Excerpt(3)))
+ // or its transpose.
+ fmt.Printf("excerpt long row vector: %v\n",
+ mat.Formatted(long.T(), mat.Prefix(" "), mat.Excerpt(3)))
+
+ // Output:
+ // excerpt big identity matrix: Dims(100, 100)
+ // ⎡1 0 0 ... ... 0 0 0⎤
+ // ⎢0 1 0 0 0 0⎥
+ // ⎢0 0 1 0 0 0⎥
+ // .
+ // .
+ // .
+ // ⎢0 0 0 1 0 0⎥
+ // ⎢0 0 0 0 1 0⎥
+ // ⎣0 0 0 ... ... 0 0 1⎦
+ //
+ // excerpt long column vector: Dims(100, 1)
+ // ⎡ 0⎤
+ // ⎢ 1⎥
+ // ⎢ 2⎥
+ // .
+ // .
+ // .
+ // ⎢97⎥
+ // ⎢98⎥
+ // ⎣99⎦
+ //
+ // excerpt long row vector: Dims(1, 100)
+ // [ 0 1 2 ... ... 97 98 99]
+
+}