亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? matrix.c

?? pixil 最新的嵌入linux 應用程序集,別的地方很難下載
?? C
字號:
/***********************************************************************matrix.c - simple matrix operationsCopyright (C) 1991 Dean RubineThis program is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License. See ../COPYING forthe full agreement.**********************************************************************//* Simple matrix operations Why I am writing this stuff over is beyond me*/#undef PIQ_DEBUG#include <stdio.h>#include <stdlib.h>#include <math.h>#include "util.h"#include "matrix.h"typedef struct array_header *Array;#define EPSILON		(1.0e-10)	/* zero range *//* Allocation functions*/VectorNewVector(r)     int r;{    register struct array_header *a;    register Vector v;    a = (struct array_header *)	allocate(sizeof(struct array_header) + r * sizeof(double), char);    a->ndims = 1;    a->nrows = r;    a->ncols = 1;    v = (Vector) (a + 1);#define CHECK#ifdef CHECK    if (HEADER(v) != (struct array_header *) a ||	NDIMS(v) != 1 || NROWS(v) != r || NCOLS(v) != 1) {	exit_error	    ("NewVector error: v=%x H: %x,%x  D:%d,%d  R:%d,%d  C:%d,%d\n", v,	     HEADER(v), a, NDIMS(v), 1, NROWS(v), r, NCOLS(v), 1);    }#endif    return v;}MatrixNewMatrix(r, c)     int r, c;{    register struct array_header *a = (struct array_header *)	allocate(sizeof(struct array_header) + r * sizeof(double *), char);    register int i;    register Matrix m;    m = (Matrix) (a + 1);    for (i = 0; i < r; i++)	m[i] = allocate(c, double);    a->ndims = 2;    a->nrows = r;    a->ncols = c;    return m;}voidFreeVector(v)     Vector v;{    free(HEADER(v));}voidFreeMatrix(m)     Matrix m;{    register int i;    for (i = 0; i < NROWS(m); i++)	free(m[i]);    free(HEADER(m));}VectorVectorCopy(v)     register Vector v;{    register Vector r = NewVector(NROWS(v));    register int i;    for (i = 0; i < NROWS(v); i++)	r[i] = v[i];    return r;}MatrixMatrixCopy(m)     register Matrix m;{    register Matrix r = NewMatrix(NROWS(m), NCOLS(m));    register int i, j;    for (i = 0; i < NROWS(m); i++)	for (j = 0; j < NROWS(m); j++)	    r[i][j] = m[i][j];    return r;}/* Null vector and matrixes */voidZeroVector(v)     Vector v;{    register int i;    for (i = 0; i < NROWS(v); i++)	v[i] = 0.0;}voidZeroMatrix(m)     Matrix m;{    register int i, j;    for (i = 0; i < NROWS(m); i++)	for (j = 0; j < NCOLS(m); j++)	    m[i][j] = 0.0;}voidFillMatrix(m, fill)     Matrix m;     double fill;{    register int i, j;    for (i = 0; i < NROWS(m); i++)	for (j = 0; j < NCOLS(m); j++)	    m[i][j] = fill;}doubleInnerProduct(v1, v2)     register Vector v1, v2;{    double result = 0;    register int n = NROWS(v1);    if (n != NROWS(v2)) {	exit_error("InnerProduct %d x %d ", n, NROWS(v2));    }    while (--n >= 0)	result += *v1++ * *v2++;    return result;}voidMatrixMultiply(m1, m2, prod)     register Matrix m1, m2, prod;{    register int i, j, k;    double sum;    if (NCOLS(m1) != NROWS(m2)) {	error("MatrixMultiply: Can't multiply %dx%d and %dx%d matrices",	      NROWS(m1), NCOLS(m1), NROWS(m2), NCOLS(m2));	return;    }    if (NROWS(prod) != NROWS(m1) || NCOLS(prod) != NCOLS(m2)) {	error("MatrixMultiply: %dx%d times %dx%d does not give %dx%d product",	      NROWS(m1), NCOLS(m1), NROWS(m2), NCOLS(m2),	      NROWS(prod), NCOLS(prod));	return;    }    for (i = 0; i < NROWS(m1); i++)	for (j = 0; j < NCOLS(m2); j++) {	    sum = 0;	    for (k = 0; k < NCOLS(m1); k++)		sum += m1[i][k] * m2[k][j];	    prod[i][j] = sum;	}}/*Compute result = v'm where	v is a column vector (r x 1)	m is a matrix (r x c)	result is a column vector (c x 1)*/voidVectorTimesMatrix(v, m, prod)     Vector v;     Matrix m;     Vector prod;{    register int i, j;    if (NROWS(v) != NROWS(m)) {	error("VectorTimesMatrix: Can't multiply %d vector by %dx%d",	      NROWS(v), NROWS(m), NCOLS(m));	return;    }    if (NROWS(prod) != NCOLS(m)) {	error	    ("VectorTimesMatrix: %d vector times %dx%d mat does not fit in %d product",	     NROWS(v), NROWS(m), NCOLS(m), NROWS(prod));	return;    }    for (j = 0; j < NCOLS(m); j++) {	prod[j] = 0;	for (i = 0; i < NROWS(m); i++)	    prod[j] += v[i] * m[i][j];    }}voidScalarTimesVector(s, v, product)     double s;     register Vector v, product;{    register int n = NROWS(v);    if (NROWS(v) != NROWS(product)) {	error("ScalarTimesVector: result wrong size (%d!=%d)",	      NROWS(v), NROWS(product));	return;    }    while (--n >= 0)	*product++ = s * *v++;}voidScalarTimesMatrix(s, m, product)     double s;     register Matrix m, product;{    register int i, j;    if (NROWS(m) != NROWS(product) || NCOLS(m) != NCOLS(product)) {	error("ScalarTimesMatrix: result wrong size (%d!=%d)or(%d!=%d)",	      NROWS(m), NROWS(product), NCOLS(m), NCOLS(product));	return;    }    for (i = 0; i < NROWS(m); i++)	for (j = 0; j < NCOLS(m); j++)	    product[i][j] = s * m[i][j];}/* Compute v'mv */doubleQuadraticForm(v, m)     register Vector v;     register Matrix m;{    register int i, j, n;    double result = 0;    n = NROWS(v);    if (n != NROWS(m) || n != NCOLS(m)) {	exit_error("QuadraticForm: bad matrix size (%dx%d not %dx%d)",		   NROWS(m), NCOLS(m), n, n);    }    for (i = 0; i < n; i++)	for (j = 0; j < n; j++) {#ifdef PIQ_DEBUG	    printf("%g*%g*%g [%g] %s ",		   m[i][j], v[i], v[j],		   m[i][j] * v[i] * v[j],		   i == n - 1 && j == n - 1 ? "=" : "+");#endif	    result += m[i][j] * v[i] * v[j];	}    return result;}/* Matrix inversion using full pivoting. * The standard Gauss-Jordan method is used. * The return value is the determinant. * The input matrix may be the same as the result matrix * *	det = InvertMatrix(inputmatrix, resultmatrix); * * HISTORY * 26-Feb-82  David Smith (drs) at Carnegie-Mellon University *	Written. * Sun Mar 20 19:36:16 EST 1988 - converted to this form by Dean Rubine * */int DebugInvertMatrix = 0;#define PERMBUFSIZE 200		/* Max mat size */#define _abs(x) ((x)>=0 ? (x) : -(x))doubleInvertMatrix(ym, rm)     Matrix ym, rm;{    register int i, j, k;    double det, biga, recip_biga, hold;    int l[PERMBUFSIZE], m[PERMBUFSIZE];    register int n;    if (NROWS(ym) != NCOLS(ym)) {	exit_error("InvertMatrix: not square");    }    n = NROWS(ym);    if (n != NROWS(rm) || n != NCOLS(rm)) {	exit_error("InvertMatrix: result wrong size");    }    /* Copy ym to rm */    if (ym != rm)	for (i = 0; i < n; i++)	    for (j = 0; j < n; j++)		rm[i][j] = ym[i][j];    //if(DebugInvertMatrix) PrintMatrix(rm, "Inverting (det=%g)\n", det);    /* Allocate permutation vectors for l and m, with the same origin       as the matrix. */    if (n >= PERMBUFSIZE) {	exit_error("InvertMatrix: PERMBUFSIZE");    }    det = 1.0;    for (k = 0; k < n; k++) {	l[k] = k;	m[k] = k;	biga = rm[k][k];	/* Find the biggest element in the submatrix */	for (i = k; i < n; i++)	    for (j = k; j < n; j++)		if (_abs(rm[i][j]) > _abs(biga)) {		    biga = rm[i][j];		    l[k] = i;		    m[k] = j;		}	if (DebugInvertMatrix)	    if (biga == 0.0)		PrintMatrix(m, "found zero biga = %g\n", biga);	/* Interchange rows */	i = l[k];	if (i > k)	    for (j = 0; j < n; j++) {		hold = -rm[k][j];		rm[k][j] = rm[i][j];		rm[i][j] = hold;	    }	/* Interchange columns */	j = m[k];	if (j > k)	    for (i = 0; i < n; i++) {		hold = -rm[i][k];		rm[i][k] = rm[i][j];		rm[i][j] = hold;	    }	/* Divide column by minus pivot	   (value of pivot element is contained in biga). */	if (biga == 0.0) {	    return 0.0;	}	if (DebugInvertMatrix)	    printf("biga = %g\n", biga);	recip_biga = 1 / biga;	for (i = 0; i < n; i++)	    if (i != k)		rm[i][k] *= -recip_biga;	/* Reduce matrix */	for (i = 0; i < n; i++)	    if (i != k) {		hold = rm[i][k];		for (j = 0; j < n; j++)		    if (j != k)			rm[i][j] += hold * rm[k][j];	    }	/* Divide row by pivot */	for (j = 0; j < n; j++)	    if (j != k)		rm[k][j] *= recip_biga;	det *= biga;		/* Product of pivots */	if (DebugInvertMatrix)	    printf("det = %g\n", det);	rm[k][k] = recip_biga;    }				/* K loop */    /* Final row & column interchanges */    for (k = n - 1; k >= 0; k--) {	i = l[k];	if (i > k)	    for (j = 0; j < n; j++) {		hold = rm[j][k];		rm[j][k] = -rm[j][i];		rm[j][i] = hold;	    }	j = m[k];	if (j > k)	    for (i = 0; i < n; i++) {		hold = rm[k][i];		rm[k][i] = -rm[j][i];		rm[j][i] = hold;	    }    }    if (DebugInvertMatrix)	printf("returning, det = %g\n", det);    return det;}#include "bitvector.h"VectorSliceVector(v, rowmask)     Vector v;     BitVector rowmask;{    register int i, ri;    Vector r = NewVector(bitcount(NROWS(v), rowmask));    for (i = ri = 0; i < NROWS(v); i++)	if (IS_SET(i, rowmask))	    r[ri++] = v[i];    return r;}MatrixSliceMatrix(m, rowmask, colmask)     Matrix m;     BitVector rowmask, colmask;{    register int i, ri, j, rj;    Matrix r;    r = NewMatrix(bitcount(NROWS(m), rowmask), bitcount(NCOLS(m), colmask));    for (i = ri = 0; i < NROWS(m); i++)	if (IS_SET(i, rowmask)) {	    for (j = rj = 0; j < NCOLS(m); j++)		if (IS_SET(j, colmask))		    r[ri][rj++] = m[i][j];	    ri++;	}    return r;}MatrixDeSliceMatrix(m, fill, rowmask, colmask, r)     Matrix m;     double fill;     BitVector rowmask, colmask;     Matrix r;{    register int i, ri, j, rj;    FillMatrix(r, fill);    for (i = ri = 0; i < NROWS(r); i++) {	if (IS_SET(i, rowmask)) {	    for (j = rj = 0; j < NCOLS(r); j++)		if (IS_SET(j, colmask))		    r[i][j] = m[ri][rj++];	    ri++;	}    }    return r;}voidOutputVector(f, v)     FILE *f;     register Vector v;{    register int i;    fprintf(f, " V %d   ", NROWS(v));    for (i = 0; i < NROWS(v); i++)	fprintf(f, " %g", v[i]);    fprintf(f, "\n");}VectorInputVector(f)     FILE *f;{    register Vector v;    register int i;    char check[4];    int nrows;    if (fscanf(f, "%1s %d", check, &nrows) != 2) {	exit_error("InputVector fscanf 1");    }    if (check[0] != 'V') {	exit_error("InputVector check");    }    v = NewVector(nrows);    for (i = 0; i < nrows; i++)	if (fscanf(f, "%lf", &v[i]) != 1) {	    exit_error("InputVector fscanf 2");	}    return v;}voidOutputMatrix(f, m)     FILE *f;     register Matrix m;{    register int i, j;    fprintf(f, " M %d %d\n", NROWS(m), NCOLS(m));    for (i = 0; i < NROWS(m); i++) {	for (j = 0; j < NCOLS(m); j++)	    fprintf(f, " %g", m[i][j]);	fprintf(f, "\n");    }}MatrixInputMatrix(f)     FILE *f;{    register Matrix m;    register int i, j;    char check[4];    int nrows, ncols;    if (fscanf(f, "%1s %d %d", check, &nrows, &ncols) != 3) {	exit_error("InputMatrix fscanf 1");    }    if (check[0] != 'M') {	exit_error("InputMatrix check");    }    m = NewMatrix(nrows, ncols);    for (i = 0; i < nrows; i++)	for (j = 0; j < ncols; j++)	    if (fscanf(f, "%lf", &m[i][j]) != 1) {		exit_error("InputMatrix fscanf 2");	    }    return m;}doubleInvertSingularMatrix(m, inv)     Matrix m, inv;{    register int i, j, k;    BitVector mask;    Matrix sm;    double det, maxdet;    int mi = -1, mj = -1, mk = -1;    maxdet = 0.0;    for (i = 0; i < NROWS(m); i++) {	printf("r&c%d, ", i);	SET_BIT_VECTOR(mask);	BIT_CLEAR(i, mask);	sm = SliceMatrix(m, mask, mask);	det = InvertMatrix(sm, sm);	if (det == 0.0)	    printf("det still 0\n");	else {	    printf("det = %g\n", det);	}	if (_abs(det) > _abs(maxdet))	    maxdet = det, mi = i;	FreeMatrix(sm);    }    printf("\n");    printf("maxdet=%g when row %d left out\n", maxdet, mi);    if (fabs(maxdet) > 1.0e-6) {	goto found;    }    maxdet = 0.0;    for (i = 0; i < NROWS(m); i++) {	for (j = i + 1; j < NROWS(m); j++) {	    /* printf("leaving out row&col %d&%d, ", i, j); */	    SET_BIT_VECTOR(mask);	    BIT_CLEAR(i, mask);	    BIT_CLEAR(j, mask);	    sm = SliceMatrix(m, mask, mask);	    det = InvertMatrix(sm, sm);	    /*	       if(det == 0.0)	       printf("det still 0\n");	       else {	       printf("det = %g\n", det);	       }	     */	    if (abs(det) > abs(maxdet))		maxdet = det, mi = i, mj = j;	    FreeMatrix(sm);	}    }    printf("maxdet=%g when rows %d,%d left out\n", maxdet, mi, mj);    if (_abs(maxdet) > 1.0e-6) {	goto found;    }    maxdet = 0.0;    for (i = 0; i < NROWS(m); i++) {	for (j = i + 1; j < NROWS(m); j++) {	    for (k = j + 1; k < NROWS(m); k++) {		/* printf("leaving out row&col %d,%d&%d, ", i, j, k); */		SET_BIT_VECTOR(mask);		BIT_CLEAR(i, mask);		BIT_CLEAR(j, mask);		BIT_CLEAR(k, mask);		sm = SliceMatrix(m, mask, mask);		det = InvertMatrix(sm, sm);		/*		   if(det == 0.0)		   printf("det still 0\n");		   else {		   printf("det = %g\n", det);		   }		 */		if (_abs(det) > _abs(maxdet))		    maxdet = det, mi = i, mj = j, mk = k;		FreeMatrix(sm);	    }	}    }    printf("maxdet=%g when rows %d,%d&%d left out\n", maxdet, mi, mj, mk);    if (mk == -1)	return 0.0;  found:    SET_BIT_VECTOR(mask);    if (mi >= 0)	BIT_CLEAR(mi, mask);    if (mj >= 0)	BIT_CLEAR(mj, mask);    if (mk >= 0)	BIT_CLEAR(mk, mask);    sm = SliceMatrix(m, mask, mask);    det = InvertMatrix(sm, sm);    DeSliceMatrix(sm, 0.0, mask, mask, inv);    FreeMatrix(sm);    PrintMatrix(inv, "desliced:\n");    return det;}/* You can fairly confidently ignore the compiler warnings after here */voidPrintVector(v, s, a1, a2, a3, a4, a5, a6, a7, a8)     register Vector v;     char *s;     int a1, a2, a3, a4, a5, a6, a7, a8;{    register int i;    printf(s, a1, a2, a3, a4, a5, a6, a7, a8);    for (i = 0; i < NROWS(v); i++)	printf(" %8.4f", v[i]);    printf("\n");}voidPrintMatrix(m, s, a1, a2, a3, a4, a5, a6, a7, a8)     register Matrix m;     char *s;     int a1, a2, a3, a4, a5, a6, a7, a8;{    register int i, j;    printf(s, a1, a2, a3, a4, a5, a6, a7, a8);    for (i = 0; i < NROWS(m); i++) {	for (j = 0; j < NCOLS(m); j++)	    printf(" %8.4f", m[i][j]);	printf("\n");    }}voidPrintArray(a, s, a1, a2, a3, a4, a5, a6, a7, a8)     Array a;     char *s;     int a1, a2, a3, a4, a5, a6, a7, a8;{    switch (NDIMS(a)) {    case 1:	PrintVector((Vector) a, s, a1, a2, a3, a4, a5, a6, a7, a8);	break;    case 2:	PrintMatrix((Matrix) a, s, a1, a2, a3, a4, a5, a6, a7, a8);	break;    default:	error("PrintArray");    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国内精品野花午夜精品| 国产成人av电影在线播放| 欧美日韩在线播放三区四区| 亚洲在线观看免费视频| 欧美日韩视频在线一区二区| 婷婷国产在线综合| 欧美变态口味重另类| 国产91丝袜在线播放九色| 中文字幕第一页久久| 91美女片黄在线观看| 亚洲一区二区三区视频在线 | 一区二区三区免费看视频| 91视频.com| 婷婷国产v国产偷v亚洲高清| 2021久久国产精品不只是精品| 国产一区二区0| 亚洲男人的天堂网| 日韩一区二区三区四区五区六区| 国产自产高清不卡| 一区二区不卡在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲国产精品久久一线不卡| 欧美体内she精高潮| 麻豆成人av在线| 国产精品毛片久久久久久| 欧美视频一区在线观看| 精品一区免费av| 亚洲欧美成人一区二区三区| 欧美久久久久久久久中文字幕| 国产精品一区二区在线播放| 亚洲第一主播视频| 久久久久久久综合| 精品视频色一区| 成人久久久精品乱码一区二区三区| 一区av在线播放| 日本一区二区三区视频视频| 欧美精品 国产精品| 成人一区二区在线观看| 肉丝袜脚交视频一区二区| 国产精品乱码人人做人人爱 | 欧美v日韩v国产v| 91视频.com| 国产成人日日夜夜| 免费视频一区二区| 一区二区免费看| 国产精品毛片久久久久久久| 欧美tk—视频vk| 欧美日韩亚洲丝袜制服| 91小视频免费看| 成人永久看片免费视频天堂| 日韩av不卡一区二区| 亚洲日本青草视频在线怡红院| 久久久另类综合| 日韩一区二区三区av| 欧美在线观看视频一区二区| 成人黄色免费短视频| 国产一区在线观看视频| 日韩一区欧美二区| 亚洲成人av中文| 亚洲最大的成人av| 国产精品乱人伦一区二区| 国产丝袜美腿一区二区三区| 欧美精品一区二区三区高清aⅴ | 精品国产乱码久久久久久牛牛| 欧美色网一区二区| 99综合电影在线视频| 成人一区二区视频| 成人黄色在线视频| 成人午夜视频免费看| 韩国三级在线一区| 国产在线精品一区二区不卡了 | 亚洲一区二区三区激情| 亚洲色图欧美在线| 亚洲天堂a在线| √…a在线天堂一区| 一区二区中文视频| 成人欧美一区二区三区小说| 亚洲欧洲日韩av| 中文字幕一区二区三区视频| 国产精品入口麻豆九色| 国产精品毛片久久久久久久| 亚洲日本在线天堂| 一个色在线综合| 亚洲成av人片在线| 日韩国产高清影视| 精品一区二区av| 成人激情午夜影院| 色婷婷一区二区三区四区| 色婷婷久久综合| 欧美日韩精品一区二区三区| 欧美精品在线一区二区三区| 欧美一区欧美二区| 久久久久九九视频| 亚洲乱码中文字幕| 视频一区视频二区在线观看| 麻豆国产精品官网| 成人午夜av在线| 91啪亚洲精品| 精品1区2区3区| www久久精品| 亚洲人成精品久久久久久| 一区二区三区精品在线观看| 首页国产欧美日韩丝袜| 国产精品夜夜爽| 一本到一区二区三区| 欧美一级片在线看| 国产精品久久久久三级| 亚洲国产cao| 国产精品亚洲人在线观看| 91热门视频在线观看| 欧美videos大乳护士334| 中文字幕一区二区三区在线观看| 午夜精品在线视频一区| 国产精品一区一区三区| 日本精品裸体写真集在线观看| 日韩女优电影在线观看| 国产精品国产精品国产专区不蜜 | 日本精品一区二区三区四区的功能| 欧美精品xxxxbbbb| 国产精品欧美极品| 日本欧美加勒比视频| 99在线精品观看| 精品国产露脸精彩对白| 亚洲乱码中文字幕综合| 精品一区中文字幕| 欧美日韩一二三| 国产精品第四页| 免费成人美女在线观看.| 91色porny| 日本一区二区三区dvd视频在线| 石原莉奈在线亚洲三区| 一本色道久久加勒比精品| 久久久久久久久久久99999| 亚洲成人动漫一区| 99国产欧美久久久精品| 亚洲精品一区二区三区香蕉| 亚洲国产aⅴ成人精品无吗| 播五月开心婷婷综合| 日韩午夜av电影| 亚洲影院免费观看| a级高清视频欧美日韩| 久久女同性恋中文字幕| 免费高清在线视频一区·| 91黄色在线观看| 中文字幕日本不卡| 高清不卡在线观看av| 精品剧情v国产在线观看在线| 亚洲国产精品久久人人爱蜜臀| 97久久超碰国产精品电影| 久久久久亚洲综合| 精品在线视频一区| 日韩欧美视频在线| 日韩电影在线看| 欧美视频一区二区三区四区| 亚洲精品写真福利| 色综合久久中文综合久久97| 中文字幕精品在线不卡| 国产裸体歌舞团一区二区| 欧美电影免费观看高清完整版| 五月婷婷欧美视频| 欧美体内she精视频| 亚洲一区在线观看免费观看电影高清| 97精品久久久午夜一区二区三区| 国产欧美精品在线观看| 成人免费av在线| 国产精品国产三级国产有无不卡 | 欧美色精品天天在线观看视频| 中文字幕一区二区三区在线不卡 | 国产日韩欧美a| 国产成人aaaa| 中文字幕在线不卡| 一本到不卡精品视频在线观看| 亚洲精选一二三| 在线观看免费一区| 午夜精品一区二区三区电影天堂 | 久久综合狠狠综合| 丁香婷婷深情五月亚洲| 国产精品成人一区二区艾草| 99re热视频精品| 亚洲一区二区欧美日韩| 欧美一区二区黄色| 国模大尺度一区二区三区| 欧美激情在线看| 在线影视一区二区三区| 日韩va欧美va亚洲va久久| 精品少妇一区二区| 不卡一区二区三区四区| 一区二区三区在线高清| 欧美高清hd18日本| 国产高清久久久| 亚洲欧美欧美一区二区三区| 欧美一区三区二区| 懂色一区二区三区免费观看| 亚洲在线视频一区| 欧美刺激脚交jootjob| 国产**成人网毛片九色| 一区二区三区精品视频在线| 精品久久久久久久久久久久包黑料 | 国产精品久久久爽爽爽麻豆色哟哟| www.欧美.com|