diff --git a/cmd/gcd.go b/cmd/gcd.go index 5d6a207..fa6a1af 100644 --- a/cmd/gcd.go +++ b/cmd/gcd.go @@ -24,12 +24,18 @@ import ( "github.com/spf13/cobra" ) +var extended bool + func gcd(cmd *cobra.Command, args []string) { var x big.Int var y big.Int var z big.Int var w big.Int + if extended && len(args) > 2 { + log.Fatal("--extended unsupported for more than two values") + } + for _, s := range args { _, ok := w.SetString(s, 10) if !ok { @@ -39,7 +45,11 @@ func gcd(cmd *cobra.Command, args []string) { z.GCD(&x, &y, &z, &w) } - fmt.Println(&z) + if extended { + fmt.Println(&z, &x, &y) + } else { + fmt.Println(&z) + } } // gcdCmd represents the gcd command @@ -63,4 +73,6 @@ func init() { // Cobra supports local flags which will only run when this command // is called directly, e.g.: // gcdCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + + gcdCmd.Flags().BoolVarP(&extended, "extended", "e", false, "also compute the Bezout coefficients") }