mirror of
				https://github.com/gonum/gonum.git
				synced 2025-10-31 02:26:59 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Code generated by "go generate gonum.org/v1/gonum/unit”; DO NOT EDIT.
 | |
| 
 | |
| // 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 unit
 | |
| 
 | |
| import (
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"math"
 | |
| 	"unicode/utf8"
 | |
| )
 | |
| 
 | |
| // Torque represents a torque in Newton metres.
 | |
| type Torque float64
 | |
| 
 | |
| const (
 | |
| 	Yottanewtonmetre Torque = 1e24
 | |
| 	Zettanewtonmetre Torque = 1e21
 | |
| 	Exanewtonmetre   Torque = 1e18
 | |
| 	Petanewtonmetre  Torque = 1e15
 | |
| 	Teranewtonmetre  Torque = 1e12
 | |
| 	Giganewtonmetre  Torque = 1e9
 | |
| 	Meganewtonmetre  Torque = 1e6
 | |
| 	Kilonewtonmetre  Torque = 1e3
 | |
| 	Hectonewtonmetre Torque = 1e2
 | |
| 	Decanewtonmetre  Torque = 1e1
 | |
| 	Newtonmetre      Torque = 1.0
 | |
| 	Decinewtonmetre  Torque = 1e-1
 | |
| 	Centinewtonmetre Torque = 1e-2
 | |
| 	Millinewtonmetre Torque = 1e-3
 | |
| 	Micronewtonmetre Torque = 1e-6
 | |
| 	Nanonewtonmetre  Torque = 1e-9
 | |
| 	Piconewtonmetre  Torque = 1e-12
 | |
| 	Femtonewtonmetre Torque = 1e-15
 | |
| 	Attonewtonmetre  Torque = 1e-18
 | |
| 	Zeptonewtonmetre Torque = 1e-21
 | |
| 	Yoctonewtonmetre Torque = 1e-24
 | |
| )
 | |
| 
 | |
| // Unit converts the Torque to a *Unit
 | |
| func (t Torque) Unit() *Unit {
 | |
| 	return New(float64(t), Dimensions{
 | |
| 		LengthDim: 2,
 | |
| 		MassDim:   1,
 | |
| 		TimeDim:   -2,
 | |
| 	})
 | |
| }
 | |
| 
 | |
| // Torque allows Torque to implement a Torquer interface
 | |
| func (t Torque) Torque() Torque {
 | |
| 	return t
 | |
| }
 | |
| 
 | |
| // From converts the unit into the receiver. From returns an
 | |
| // error if there is a mismatch in dimension
 | |
| func (t *Torque) From(u Uniter) error {
 | |
| 	if !DimensionsMatch(u, Newtonmetre) {
 | |
| 		*t = Torque(math.NaN())
 | |
| 		return errors.New("Dimension mismatch")
 | |
| 	}
 | |
| 	*t = Torque(u.Unit().Value())
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (t Torque) Format(fs fmt.State, c rune) {
 | |
| 	switch c {
 | |
| 	case 'v':
 | |
| 		if fs.Flag('#') {
 | |
| 			fmt.Fprintf(fs, "%T(%v)", t, float64(t))
 | |
| 			return
 | |
| 		}
 | |
| 		fallthrough
 | |
| 	case 'e', 'E', 'f', 'F', 'g', 'G':
 | |
| 		p, pOk := fs.Precision()
 | |
| 		w, wOk := fs.Width()
 | |
| 		const unit = " N m"
 | |
| 		switch {
 | |
| 		case pOk && wOk:
 | |
| 			fmt.Fprintf(fs, "%*.*"+string(c), pos(w-utf8.RuneCount([]byte(unit))), p, float64(t))
 | |
| 		case pOk:
 | |
| 			fmt.Fprintf(fs, "%.*"+string(c), p, float64(t))
 | |
| 		case wOk:
 | |
| 			fmt.Fprintf(fs, "%*"+string(c), pos(w-utf8.RuneCount([]byte(unit))), float64(t))
 | |
| 		default:
 | |
| 			fmt.Fprintf(fs, "%"+string(c), float64(t))
 | |
| 		}
 | |
| 		fmt.Fprint(fs, unit)
 | |
| 	default:
 | |
| 		fmt.Fprintf(fs, "%%!%c(%T=%g N m)", c, t, float64(t))
 | |
| 	}
 | |
| }
 | 
