package main

import (
	"fmt"
	"log"
	"math"
	"os"
	"strconv"
)

type Numbers interface {
	int64 | float64 | int
}

func main() {
	fmt.Print()
	if len(os.Args) != 2 {
		fmt.Println("Usage: ./sqrt 49")
		os.Exit(1)
	}
	arg, err := strconv.Atoi(os.Args[1])
	if err != nil {
		log.Fatalf("Error occurred calculating square root: %v\n", err)
	}

	s := getSquareRoot(arg)
	fmt.Println(s)
}

func getSquareRoot[T Numbers](n T) T {

	squareRoot := math.Sqrt(float64(n))

	return T(squareRoot)
}