<commit_before>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Transformation
{
    public class LogTransformation
    {
        public enum LogType
        {
            CommonLog, // 밑이 10인 로그, 상용 로그
            BinaryLog, // 밑이 2인 로그
            NatualLog // 밑이 e인 로그, 자연 로그
        }




        /// <summary>
        /// 숫자를 십진 로그 값으로 바꾸는 함수
        /// </summary>
        /// <param name="input">입력한 숫자</param>
        /// <param name="min">입력한 숫자가 속한 범위의 최소값</param>
        /// <param name="max">입력한 숫자가 속한 범위의 최대값</param>
        /// <param name="logType">로그의 종류</param>
        /// <returns></returns>
        public float NumToLog(float input, float min, float max, LogType logType = LogType.CommonLog)
        {
            float result = 0;

            if (input >= min && input <= max)
            {
                result = Convert.ToSingle(Math.Log10(input));
            }

            if(float.IsInfinity(result) || input < min || input > max || input == 0)
            {
                result = float.NaN;
            }

            if(input < 0)
            {
                result = Convert.ToSingle(Math.Log10(Math.Abs(input)) * (-1));
            }

            return result;
        }




        /// <summary>
        /// 십진 로그 값을 숫자로 바꾸는 함수
        /// </summary>
        /// <param name="input">입력한 로그 값</param>
        /// <param name="min">입력한 로그 값이 속한 범위의 최소값</param>
        /// <param name="max">입력한 로그 값이 속한 범위의 최대값</param>
        /// <param name="isPreviousNumberNegative">입력한 로그 값으로 바꾼 숫자가 음수인지의 여부</param>
        /// <param name="logType">입력한 로그 값의 로그 종류</param>
        /// <returns></returns>
        public float LogToNum(float input, float min, float max, bool isPreviousNumberNegative, LogType logType = LogType.CommonLog)
        {
            float result = 0;

            if(input > 0)
            {
                result = Convert.ToSingle(Math.Pow(10, Convert.ToDouble(input)));
            }
            else
            {
                if(isPreviousNumberNegative == true)
                {
                    result = Convert.ToSingle(Math.Pow(10, Convert.ToDouble(Math.Abs(input))) * (-1));
                }
                else
                {
                    result = Convert.ToSingle(Math.Pow(10, Convert.ToDouble(input)));
                }
                <commit_msg>함수 로직 수정<commit_after>﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Transformation
{
    public class LogTransformation
    {
        public enum LogType
        {
            CommonLog, // 밑이 10인 로그, 상용 로그
            BinaryLog, // 밑이 2인 로그
            NatualLog // 밑이 e인 로그, 자연 로그
        }




        /// <summary>
        /// 숫자를 상용로그 값으로 바꾸는 함수
        /// </summary>
        /// <param name="input">입력한 숫자</param>
        /// <param name="min">입력한 숫자가 속한 범위의 최소값</param>
        /// <param name="max">입력한 숫자가 속한 범위의 최대값</param>
        /// <param name="logType">로그의 종류</param>
        /// <returns></returns>
        public float NumToLog(float input, float min, float max, LogType logType = LogType.CommonLog)
        {
            float result = float.NaN;

            if (input >= min && input <= max)
            {
                result = Convert.ToSingle(Math.Log10(input));
            }

            if (input < 0)
            {
                result = Convert.ToSingle(Math.Log10(Math.Abs(input)) * (-1));
            }
            
            // 무한대 값 처리
            if(float.IsInfinity(result))
            {
                result = float.NaN;
            }           

            return result;
        }




        /// <summary>
        /// 상용로그 값을 숫자로 바꾸는 함수
        /// </summary>
        /// <param name="input">입력한 로그 값</param>
        /// <param name="min">입력한 로그 값이 속한 범위의 최소값</param>
        /// <param name="max">입력한 로그 값이 속한 범위의 최대값</param>
        /// <param name="isPreviousNumberNegative">입력한 로그 값으로 바꾼 숫자가 음수인지의 여부</param>
        /// <param name="logType">입력한 로그 값의 로그 종류</param>
        /// <returns></returns>
        public float LogToNum(float input, float min, float max, LogType logType = LogType.CommonLog)
        {
            float result = float.NaN;

            if(input > 0)
            {
                result = Convert.ToSingle(Math.Pow(10, input));
            }
            else
            {
                if(input > max || input > min)
                {
                    result = Convert.ToSingle(Math.Pow(10, Math.Abs(input))) * (-1);
                }
                else if(input < min || input < max)
                {
                    result = Convert.ToSingle(Math.Pow(10, input));
                }
{'fraction_non_alphanumeric': 0.1280870657178736, 'fraction_numerical': 0.007743825868564253, 'mean_word_length': 1.3403525954946132, 'pattern_counts': {'":': 0, '<': 62, '<?xml version=': 0, '>': 62, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1347051', 'n_tokens_mistral': 1695, 'n_tokens_neox': 1808, 'n_words': 344}