Skip to content

Commit

Permalink
trigonometry
Browse files Browse the repository at this point in the history
  • Loading branch information
armancodv committed Jun 25, 2021
1 parent e073558 commit 0a1118c
Show file tree
Hide file tree
Showing 499 changed files with 2,271 additions and 305 deletions.
14 changes: 10 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ android {
applicationId "com.armanco.integral"
minSdkVersion 21
targetSdkVersion 30
versionCode 100018
versionName "4.10.0"
versionCode 100020
versionName "4.10.2"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down Expand Up @@ -49,12 +49,18 @@ android {
pro {
dimension 'default'
applicationId "com.armanco.integral_pro"
buildConfigField "String", "app_name", "\"Integral PRO\""
}
persian {
dimension 'default'
applicationId "com.armanco.integral_persian"
buildConfigField "String", "app_name", "\"Integral Persian\""
}
trigonometry {
dimension 'default'
applicationId "com.armanco.trigonometry"
}
trigonometryPersian {
dimension 'default'
applicationId "com.armanco.trigonometry_persian"
}
}

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/armanco/integral/data/db/CategoryDao.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@ package com.armanco.integral.data.db

import androidx.room.*
import com.armanco.integral.data.models.Category
import com.armanco.integral.data.models.Section

@Dao
interface CategoryDao {
@Query("SELECT * FROM category")
suspend fun getAll(): List<Category>

@Query("SELECT * FROM category WHERE section = :section")
suspend fun getBySection(section: Section): List<Category>

@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertAll(vararg category: Category)

Expand Down
4 changes: 3 additions & 1 deletion app/src/main/java/com/armanco/integral/data/db/Db.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@ package com.armanco.integral.data.db

import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import com.armanco.integral.data.models.Category
import com.armanco.integral.data.models.Formula

@Database(entities = [Category::class, Formula::class], version = 1)
@Database(entities = [Category::class, Formula::class], version = 2)
@TypeConverters(SectionTypeConverter::class)
abstract class Db : RoomDatabase() {
abstract fun categoryDao(): CategoryDao
abstract fun formulaDao(): FormulaDao
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.armanco.integral.data.db

import androidx.room.TypeConverter
import com.armanco.integral.data.models.Section


class SectionTypeConverter {

@TypeConverter
fun toSection(value: Int) = enumValues<Section>()[value]

@TypeConverter
fun fromSection(value: Section) = value.ordinal

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.armanco.integral.data.models

enum class AngleUnit {
DEGREE,
RADIAN
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,13 @@ import androidx.annotation.StringRes
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import androidx.room.TypeConverters
import com.armanco.integral.data.db.SectionTypeConverter

@Entity
data class Category(@PrimaryKey val id: Int, @ColumnInfo(name = "drawable_res") @DrawableRes val drawableRes: Int, @ColumnInfo(name = "string_res") @StringRes val stringRes: Int)
data class Category(
@PrimaryKey val id: Int,
@ColumnInfo(name = "drawable_res") @DrawableRes val drawableRes: Int,
@ColumnInfo(name = "string_res") @StringRes val stringRes: Int,
@ColumnInfo(name = "section") val section: Section?,
)
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@ package com.armanco.integral.data.models
data class ConfigAds (
val bannerId: String? = null,
val interstitialId: String? = null,
val randomSize: Int? = null,
val integral: ConfigAdsApp? = null,
val integralPersian: ConfigAdsApp? = null
val integralPersian: ConfigAdsApp? = null,
val trigonometry: ConfigAdsApp? = null,
val trigonometryPersian: ConfigAdsApp? = null,
) {
companion object {
const val KEY = "ads"
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/java/com/armanco/integral/data/models/Keys.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.armanco.integral.data.models

object Keys {
const val SECTION = "section"
}
6 changes: 6 additions & 0 deletions app/src/main/java/com/armanco/integral/data/models/Section.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.armanco.integral.data.models

enum class Section {
INTEGRAL,
TRIGONOMETRY
}
7 changes: 7 additions & 0 deletions app/src/main/java/com/armanco/integral/data/models/Solver.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.armanco.integral.data.models

enum class Solver {
INTEGRAL,
TRIGONOMETRY,
INVERSE_TRIGONOMETRY
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,45 @@ package com.armanco.integral.data.repository
import com.armanco.integral.R
import com.armanco.integral.data.db.CategoryDao
import com.armanco.integral.data.models.Category
import com.armanco.integral.data.models.Section
import javax.inject.Inject

class CategoryRepository @Inject constructor(
private val categoryDao: CategoryDao
){
suspend fun getAll() = categoryDao.getAll()
suspend fun getBySection(section: Section) = categoryDao.getBySection(section)
suspend fun getOne(id: Int) = categoryDao.getOne(id)
suspend fun getCount() = categoryDao.getCount()
suspend fun deleteAll() = categoryDao.deleteAll()
suspend fun insertAll(vararg category: Category) = categoryDao.insertAll(*category)
suspend fun populate() {
deleteAll()
insertAll(
Category(1, R.drawable.ic_cat_1, R.string.category_1),
Category(2, R.drawable.ic_cat_2, R.string.category_2),
Category(3, R.drawable.ic_cat_3, R.string.category_3),
Category(4, R.drawable.ic_cat_4, R.string.category_4),
Category(5, R.drawable.ic_cat_5, R.string.category_5),
Category(6, R.drawable.ic_cat_6, R.string.category_6),
Category(7, R.drawable.ic_cat_7, R.string.category_7),
Category(8, R.drawable.ic_cat_8, R.string.category_8),
Category(9, R.drawable.ic_cat_9, R.string.category_9),
Category(10, R.drawable.ic_cat_10, R.string.category_10),
Category(11, R.drawable.ic_cat_11, R.string.category_11),
Category(1, R.drawable.ic_cat_1, R.string.category_1, Section.INTEGRAL),
Category(2, R.drawable.ic_cat_2, R.string.category_2, Section.INTEGRAL),
Category(3, R.drawable.ic_cat_3, R.string.category_3, Section.INTEGRAL),
Category(4, R.drawable.ic_cat_4, R.string.category_4, Section.INTEGRAL),
Category(5, R.drawable.ic_cat_5, R.string.category_5, Section.INTEGRAL),
Category(6, R.drawable.ic_cat_6, R.string.category_6, Section.INTEGRAL),
Category(7, R.drawable.ic_cat_7, R.string.category_7, Section.INTEGRAL),
Category(8, R.drawable.ic_cat_8, R.string.category_8, Section.INTEGRAL),
Category(9, R.drawable.ic_cat_9, R.string.category_9, Section.INTEGRAL),
Category(10, R.drawable.ic_cat_10, R.string.category_10, Section.INTEGRAL),
Category(11, R.drawable.ic_cat_11, R.string.category_11, Section.INTEGRAL),

Category(12, R.drawable.ic_formula, R.string.category_tri_1, Section.TRIGONOMETRY),
Category(13, R.drawable.ic_formula, R.string.category_tri_2, Section.TRIGONOMETRY),
Category(14, R.drawable.ic_formula, R.string.category_tri_3, Section.TRIGONOMETRY),
Category(15, R.drawable.ic_formula, R.string.category_tri_4, Section.TRIGONOMETRY),
Category(16, R.drawable.ic_formula, R.string.category_tri_5, Section.TRIGONOMETRY),
Category(17, R.drawable.ic_formula, R.string.category_tri_6, Section.TRIGONOMETRY),
Category(18, R.drawable.ic_formula, R.string.category_tri_7, Section.TRIGONOMETRY),
Category(19, R.drawable.ic_formula, R.string.category_tri_8, Section.TRIGONOMETRY),
Category(20, R.drawable.ic_formula, R.string.category_tri_9, Section.TRIGONOMETRY),
Category(21, R.drawable.ic_formula, R.string.category_tri_10, Section.TRIGONOMETRY),
Category(22, R.drawable.ic_formula, R.string.category_tri_11, Section.TRIGONOMETRY),
Category(23, R.drawable.ic_formula, R.string.category_tri_12, Section.TRIGONOMETRY),
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import javax.inject.Inject

class FormulaRepository @Inject constructor(
private val formulaDao: FormulaDao
){
) {
suspend fun getAll() = formulaDao.getAll()
suspend fun getCount() = formulaDao.getCount()
suspend fun deleteAll() = formulaDao.deleteAll()
Expand Down Expand Up @@ -251,5 +251,100 @@ class FormulaRepository @Inject constructor(
Formula(1125, 11, R.drawable.img_11_25, R.string.formula_11_25),
Formula(1126, 11, R.drawable.img_11_26, R.string.formula_11_26),
)
insertAll(
Formula(1201, 12, R.drawable.tri_1_1, R.string.tri_1_1),
Formula(1202, 12, R.drawable.tri_1_2, R.string.tri_1_2),
Formula(1203, 12, R.drawable.tri_1_3, R.string.tri_1_3),
Formula(1204, 12, R.drawable.tri_1_4, R.string.tri_1_4),
Formula(1205, 12, R.drawable.tri_1_5, R.string.tri_1_5),
Formula(1206, 12, R.drawable.tri_1_6, R.string.tri_1_6),
Formula(1207, 12, R.drawable.tri_1_7, R.string.tri_1_7),

Formula(1301, 13, R.drawable.tri_2_1, R.string.tri_2_1),
Formula(1302, 13, R.drawable.tri_2_2, R.string.tri_2_2),
Formula(1303, 13, R.drawable.tri_2_3, R.string.tri_2_3),
Formula(1304, 13, R.drawable.tri_2_4, R.string.tri_2_4),
Formula(1305, 13, R.drawable.tri_2_5, R.string.tri_2_5),
Formula(1306, 13, R.drawable.tri_2_6, R.string.tri_2_6),

Formula(1401, 14, R.drawable.tri_3_1, R.string.tri_3_1),
Formula(1402, 14, R.drawable.tri_3_2, R.string.tri_3_2),
Formula(1403, 14, R.drawable.tri_3_3, R.string.tri_3_3),
Formula(1404, 14, R.drawable.tri_3_4, R.string.tri_3_4),
Formula(1405, 14, R.drawable.tri_3_5, R.string.tri_3_5),
Formula(1406, 14, R.drawable.tri_3_6, R.string.tri_3_6),

Formula(1501, 15, R.drawable.tri_4_1, R.string.tri_4_1),
Formula(1502, 15, R.drawable.tri_4_2, R.string.tri_4_2),
Formula(1503, 15, R.drawable.tri_4_3, R.string.tri_4_3),
Formula(1504, 15, R.drawable.tri_4_4, R.string.tri_4_4),

Formula(1601, 16, R.drawable.tri_5_1, R.string.tri_5_1),
Formula(1602, 16, R.drawable.tri_5_2, R.string.tri_5_2),
Formula(1603, 16, R.drawable.tri_5_3, R.string.tri_5_3),
Formula(1604, 16, R.drawable.tri_5_4, R.string.tri_5_4),

Formula(1701, 17, R.drawable.tri_6_1, R.string.tri_6_1),
Formula(1702, 17, R.drawable.tri_6_2, R.string.tri_6_2),
Formula(1703, 17, R.drawable.tri_6_3, R.string.tri_6_3),
Formula(1704, 17, R.drawable.tri_6_4, R.string.tri_6_4),

Formula(1801, 18, R.drawable.tri_7_1, R.string.tri_7_1),
Formula(1802, 18, R.drawable.tri_7_2, R.string.tri_7_2),
Formula(1803, 18, R.drawable.tri_7_3, R.string.tri_7_3),
Formula(1804, 18, R.drawable.tri_7_4, R.string.tri_7_4),
Formula(1805, 18, R.drawable.tri_7_5, R.string.tri_7_5),
Formula(1806, 18, R.drawable.tri_7_6, R.string.tri_7_6),

Formula(1901, 19, R.drawable.tri_8_1, R.string.tri_8_1),
Formula(1902, 19, R.drawable.tri_8_2, R.string.tri_8_2),
Formula(1903, 19, R.drawable.tri_8_3, R.string.tri_8_3),
Formula(1904, 19, R.drawable.tri_8_4, R.string.tri_8_4),
Formula(1905, 19, R.drawable.tri_8_5, R.string.tri_8_5),

Formula(2001, 20, R.drawable.tri_9_1, R.string.tri_9_1),
Formula(2002, 20, R.drawable.tri_9_2, R.string.tri_9_2),
Formula(2003, 20, R.drawable.tri_9_3, R.string.tri_9_3),

Formula(2101, 21, R.drawable.tri_10_1, R.string.tri_10_1),
Formula(2102, 21, R.drawable.tri_10_2, R.string.tri_10_2),
Formula(2103, 21, R.drawable.tri_10_3, R.string.tri_10_3),
Formula(2104, 21, R.drawable.tri_10_4, R.string.tri_10_4),
Formula(2105, 21, R.drawable.tri_10_5, R.string.tri_10_5),
Formula(2106, 21, R.drawable.tri_10_6, R.string.tri_10_6),
Formula(2107, 21, R.drawable.tri_10_7, R.string.tri_10_7),
Formula(2108, 21, R.drawable.tri_10_8, R.string.tri_10_8),
Formula(2109, 21, R.drawable.tri_10_9, R.string.tri_10_9),
Formula(2110, 21, R.drawable.tri_10_10, R.string.tri_10_10),
Formula(2111, 21, R.drawable.tri_10_11, R.string.tri_10_11),

Formula(2201, 22, R.drawable.tri_11_1, R.string.tri_11_1),
Formula(2202, 22, R.drawable.tri_11_2, R.string.tri_11_2),
Formula(2203, 22, R.drawable.tri_11_3, R.string.tri_11_3),
Formula(2204, 22, R.drawable.tri_11_4, R.string.tri_11_4),
Formula(2205, 22, R.drawable.tri_11_5, R.string.tri_11_5),
Formula(2206, 22, R.drawable.tri_11_6, R.string.tri_11_6),
Formula(2207, 22, R.drawable.tri_11_7, R.string.tri_11_7),
Formula(2208, 22, R.drawable.tri_11_8, R.string.tri_11_8),
Formula(2209, 22, R.drawable.tri_11_9, R.string.tri_11_9),
Formula(2210, 22, R.drawable.tri_11_10, R.string.tri_11_10),
Formula(2211, 22, R.drawable.tri_11_11, R.string.tri_11_11),
Formula(2212, 22, R.drawable.tri_11_12, R.string.tri_11_12),

Formula(2301, 23, R.drawable.tri_12_1, R.string.tri_12_1),
Formula(2302, 23, R.drawable.tri_12_2, R.string.tri_12_2),
Formula(2303, 23, R.drawable.tri_12_3, R.string.tri_12_3),
Formula(2304, 23, R.drawable.tri_12_4, R.string.tri_12_4),
Formula(2305, 23, R.drawable.tri_12_5, R.string.tri_12_5),
Formula(2306, 23, R.drawable.tri_12_6, R.string.tri_12_6),
Formula(2307, 23, R.drawable.tri_12_7, R.string.tri_12_7),
Formula(2308, 23, R.drawable.tri_12_8, R.string.tri_12_8),
Formula(2309, 23, R.drawable.tri_12_9, R.string.tri_12_9),
Formula(2310, 23, R.drawable.tri_12_10, R.string.tri_12_10),
Formula(2311, 23, R.drawable.tri_12_11, R.string.tri_12_11),
Formula(2312, 23, R.drawable.tri_12_12, R.string.tri_12_12),
Formula(2313, 23, R.drawable.tri_12_13, R.string.tri_12_13)

)
}
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package com.armanco.integral.data.repository

import com.github.mikephil.charting.data.Entry
import com.mathlibrary.exception.CalculatorException
import com.mathlibrary.function.FunctionX
import javax.inject.Inject

class PlotRepository @Inject constructor(
private val solverRepository: SolverRepository
) {

@Throws(CalculatorException::class)
fun value(f: String, x: Double): Double {
val function = FunctionX(f, false)
return function.getF_xo(x)
}

@Throws(CalculatorException::class)
fun entries(f: String, lowerLimit: Double, upperLimit: Double, steps: Int): List<Entry> {
val entries = mutableListOf<Entry>()
val dx = (upperLimit - lowerLimit) / steps.toDouble()
Expand All @@ -23,6 +26,7 @@ class PlotRepository @Inject constructor(
return entries
}

@Throws(CalculatorException::class)
fun entriesIntegral(f: String, lowerLimit: Double, upperLimit: Double, steps: Int): List<Entry> {
val entries = mutableListOf<Entry>()
val dx = (upperLimit - lowerLimit) / steps.toDouble()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,35 +1,27 @@
package com.armanco.integral.data.repository

import com.mathlibrary.exception.CalculatorException
import com.mathlibrary.integral.Integral
import javax.inject.Inject

class SolverRepository @Inject constructor() {

@Throws(CalculatorException::class)
fun trapezoidal(f: String, lowerLimit: Double, upperLimit: Double): Double? {
return try {
val integral = Integral(f, false)
integral.trapezoidal(lowerLimit, upperLimit)
} catch (e: Exception) {
null
}
val integral = Integral(f, false)
return integral.trapezoidal(lowerLimit, upperLimit)
}

@Throws(CalculatorException::class)
fun simpson(f: String, lowerLimit: Double, upperLimit: Double): Double? {
return try {
val integral = Integral(f, false)
integral.simpson(lowerLimit, upperLimit)
} catch (e: Exception) {
null
}
val integral = Integral(f, false)
return integral.simpson(lowerLimit, upperLimit)
}

@Throws(CalculatorException::class)
fun romberg(f: String, lowerLimit: Double, upperLimit: Double, steps: Int): Double? {
return try {
val integral = Integral(f, false)
integral.Romberg(lowerLimit, upperLimit, steps)
} catch (e: Exception) {
null
}
val integral = Integral(f, false)
return integral.Romberg(lowerLimit, upperLimit, steps)
}

}
2 changes: 1 addition & 1 deletion app/src/main/java/com/armanco/integral/di/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ object AppModule {
appContext,
Db::class.java,
"database"
).build()
).fallbackToDestructiveMigration().build()
}

@Singleton
Expand Down
Loading

0 comments on commit 0a1118c

Please sign in to comment.