             throw SwispError.SyntaxError(message: "invalid procedure input")
         }
         switch (args[safe: 0], args[safe: 1]) {
+        case let (val1 as Int, val2 as Int):
+            return Foundation.atan2(Double(val1), Double(val2))
+        case let (val1 as Int, val2 as Double):
+            return Foundation.atan2(Double(val1), val2)
+        case let (val1 as Double, val2 as Int):
+            return Foundation.atan2(val1, Double(val2))
         case let (val1 as Double, val2 as Double):
             return Foundation.atan2(val1, val2)
         default:

        switch (args[safe: 0]) {
        case let (val as Double):
            return Foundation.sin(val)
        default:
            throw SwispError.SyntaxError(message: "invalid procedure input")
        }

            throw SwispError.SyntaxError(message: "invalid procedure input")
        }
        switch (args[safe: 0], args[safe: 1]) {
        case let (val1 as Int, val2 as Int):
            return Foundation.hypot(Double(val1), Double(val2))
        case let (val1 as Int, val2 as Double):
            return Foundation.hypot(Double(val1), val2)
        case let (val1 as Double, val2 as Int):
            return Foundation.hypot(val1, Double(val2))
        case let (val1 as Double, val2 as Double):
            return Foundation.hypot(val1, val2)
        default:
